背景
いくつかのフレームワークはまた、古いログフレームワークのlog4jの-1.xのシリーズを使用しているので、コンソールに表示することはできませんデバッグ情報の過程でいくつかのエラー、試運転コストを増大させるがあります。次の設定方法
私たちはあなたのlog4j-1.xのログがコンソールに表示され得るのを助けます。
ソリューション:
ファサードパターンとして使用logback行為は、基本的なロギングフレームワークに彼によって適合しました。
logback-spring.xml(名前を使用する必要があります)
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < 設定 スキャン= "true"をscanPeriod = "60秒" デバッグ= "false"に> < のcontextName >デフォルト</ contextNameは> < springProperty スコープ= "文脈" 名= "ログレベル" ソース= "logging.level.root" /> < springProperty 範囲= "コンテキスト" 名前= "LOGPATH" ソース= "logging.path" 名前= "のapplicationName" ソース= "spring.application.name" /> <! - 输出到控制台- > < アペンダ名= "コンソール" クラス= "ch.qos.logback.core.ConsoleAppender" > < フィルタクラス= "ch.qos.logback.classic.filter.ThresholdFilter" > < レベル> $ {ログレベル} </ レベル> </ フィルタ> < エンコーダ> < パターン>%D {YYYY-MM-DD HH:MM:SS 。SSS}%のcontextName [%スレッド]%-5level%ロガー{36} - %MSG%N </ パターン> </ エンコーダ> </ アペンダ> <! - 输出到文件- > < アペンダ名= "ファイル" クラス= "ch.qos.logback.core.rolling.RollingFileAppender" > < ファイル> $ {LOGPATH} / $ {}のapplicationNameの.log </ ファイル> < rollingPolicyのクラス= "ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" > <! - 毎日ロールオーバー- > < fileNamePattern > $ {LOGPATH} / $ {}のapplicationName / $ {}のapplicationName%D {YYYY。 -MM-DD}%i.log。</ fileNamePattern > <! - キープ30日3ギガバイトの合計サイズを上限歴史の価値- > < maxHistory > 30 </ maxHistory > < maxFileSizeの> 100メガバイト</ maxFileSizeの> < totalSizeCap > 30ギガバイト</ totalSizeCap > </ rollingPolicy > < エンコーダ> < パターン>%D {YYYY-MM-DD HH:MM:SS .SSS}%のcontextName [%スレッド]%-5level%ロガー{36} - %のMSG%N </ パターン> </ エンコーダ> </ アペンダ> < ルートレベル= "$ {ログレベル}" > < アペンダ-REF REF = "コンソール" /> < アペンダ-REF REF = "ファイル" /> </ ルート> </ 構成>
application.yml / application.properties(多くの場合、プログラムが正しく実行されませんしましょう、なぜなら悪名高いスペースの問題ではなく、YAMLフォーマットのような)次の属性を追加します
application.yml
春:
応用:
名前:aiPlatform
ログ:
レベル:
ルート:デバッグ
パス:C:\\ XXX
xatu.zsl:デバッグ
org.springfromework.web:デバッグ
application.properties
spring.application.name = aiPlatform logging.level.root = デバッグ logging.path:C:\\ XXX
設定ログ・パス
1、オペレーティングシステム環境変数
Logging.pathもちろん、動的にオペレーティング・システム環境変数など撮影、設定します
logging.path:$ {TEMP}
#等価:System.getenv( "TEMP")
2、JVM特性
私がテストした後、あなたはまた、JVMプロパティを設定することができ、ログ・パス、価値を評価する方法の内部表現として、私は深く追いかけるコードを行きませんでした
図1において、第1セットの起動クラスのプロパティ
輸入org.springframework.boot.SpringApplication。 輸入org.springframework.boot.autoconfigure.EnableAutoConfiguration。 輸入org.springframework.boot.autoconfigure.SpringBootApplication。 輸入org.springframework.boot.system.ApplicationHome; 輸入org.springframework.cache.annotation.CacheConfig; 輸入org.springframework.cache.annotation.EnableCaching。 輸入org.springframework.context.annotation.ComponentScan; 輸入org.springframework.scheduling.annotation.EnableAsync; インポートのjava.io.File; インポートにjava.io.IOException; 輸入java.nio.file.Files。 輸入java.nio.file.Path; @EnableAsync @EnableCaching @CacheConfig @EnableAutoConfiguration @SpringBootApplication(除外 = { xxxConfig。クラス }) @ComponentScan パブリック クラスのWebApplication { パブリック 静的 ボイドメイン(文字列[]引数)がスローIOExceptionが{ ホームApplicationHome = 新新 ApplicationHome(のWebApplication。クラス); // jarファイルでフォルダにAを返します。これは、私が欲しかったものです。。 ファイルRootFolder = home.getDir(); // 同じディレクトリの下のlogsディレクトリ絶対アドレスのjarファイルを特定 のパス。LOGPATH = rootFolder.toPath()解決( "ログ")正規化()toAbsolutePath(); ... // JARファイルの親ディレクトリのログフォルダパス // パスLOGPATH = rootFolder.toPath()のgetParent()解決.. ( "ログ")正規化() toAbsolutePath()..; もし(!Files.exists(LOGPATH)) { Files.createDirectories(LOGPATH)。 } するSystem.setProperty( "ログパス" 、logPath.toString()); SpringApplication.run(のWebApplication クラス、引数)。 } }
application.ymlロギング構成パス:
ログ:
レベル:
ルート:デバッグ
パス:$ {} LOGPATH
示すように、JARにパッケージ化springbootは、同じディレクトリに新しいプログラムは、フォルダをログに記録し、ウェブ-0.3.jar同じディレクトリのファイルフォルダを記録します
ログフォルダにログレコード
Springフレームワークは、もはや使用のlog4j-1.x.jarロギングフレームワークに提案され、2.0.2.RELEASEを使用して記事の著者は、私は、2.1.6へのアップデートに多くのロギング設定を試していません
logging.path = $ {} LOGPATH
長い作品いいえ、それは回復に時間の深い理由は行きませんでした。