log4jは、高い同時実行の場合には、同期ログは、プロセスをブロックされて表示されますヒット。log4jのをアップグレードするには
1.ポンポン依存のlog4jを削除します
SLF4J-log4j12とのlog4jを削除します。
2.ポンポン依存logbackを追加します。
< プロパティ> < SLF4J-api.version > 1.7.25 </ SLF4J-api.version > < logback.version > 1.2.3 </ logback.version </プロパティ> <! - ログイン- > < 依存> < groupIdを> org.slf4j </ groupIdを> < たartifactId > SLF4J-API </ たartifactId > < バージョン> $ {SLF4J-api.version} </ バージョン> </ 依存関係> <! - 把共通-logging.jar桥接到SLF4J - > < 依存> < groupIdを> org.slf4j </ groupIdを> < たartifactId >JCLオーバーSLF4J</ たartifactId > < バージョン> $ {SLF4J-api.version} </ バージョン> </ 依存関係> <! - 把log4j1.x.jar桥接到SLF4J - > < 依存> < groupIdを> org.slf4j </ groupId > < たartifactId > log4jのオーバーSLF4J </ たartifactId > < バージョン> $ {SLF4J-api.version} </ バージョン> </ 依存> <依存関係> <groupId > ch.qos.logback </ のgroupId > < たartifactId > logback-古典</ たartifactId > < バージョン> $ {logback.version} </ バージョン> </ 依存> < 依存性> < のgroupId > ch.qos.logback < / のgroupId > < たartifactId > logbackアクセス</ たartifactId > < バージョン> $ {logback.version} </ バージョン> </ 依存関係>
あなたが競合Mavenの競合プラグインを除外するためのアイデアを使用することができた場合3.いくつかのポンポンの参照は、より深いのlog4jに依存してもよいです
4. logback.xml設定ファイル、パスのsrc /メイン/リソース
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < 設定デバッグ= "false"に> <! - 控制台输出- > < アペンダ名= "STDOUT" クラス= "ch.qos.logback.core .ConsoleAppender」> < エンコーダのクラス= "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > < パターン>%のD {YYYY-MM-DD HH:MM:SS.SSS} [%スレッド]%-5level%ロガー{50} - %のMSG%N </ パターン> < 文字セット> UTF-8 < </ アペンダ> <! - 応じてログファイルが日ごとに生成されます- > < アペンダ名= "FILE" クラス= "ch.qos.logback.core.rolling.RollingFileAppender" > < rollingPolicy クラス=「ch.qos.logback.core.rolling。 TimeBasedRollingPolicy " > <! - ログファイル出力のファイル名- > < FileNamePattern > /data/logs/temp.%d{yyyy-MM-dd}.log </ FileNamePattern > <! - ログファイルは数日間保持されます- - > < MaxHistory > 15 </ MaxHistory > </ rollingPolicy > < エンコーダのクラス= "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > < パターン>%のD {YYYY-MM-DD HH:MM:SS.SSS} [%スレッド]%-5level%ロガー{50} - %MSG%N </ パターン> < 文字セット> UTF-8 </ 文字セット> </ エンコーダ> </ アペンダ> <! - 非同期アペンダ- > < アペンダ名= "ACCESS_FILE" クラス= "ch.qos.logback.core.rolling.RollingFileAppender" > < rollingPolicy クラス= "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > <! - ログファイル出力のファイル名- > < FileNamePattern > /data/logs/access.%d{yyyy-MM-dd}.log </ FileNamePattern > <! - 数日間のログファイルを保持します- > < MaxHistory > 7 </ MaxHistory > </ rollingPolicy > < エンコーダのクラス= "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > < パターン>%のD {YYYY-MM-DD HH:MM:SS.SSS} [%スレッド]%-5level%ロガー{50} - %MSG%N </ パターン> < 文字セット> UTF-8 </ 文字セット> </ エンコーダ> </ アペンダ> <! - 非同期出力- > < アペンダ名= "ASYNC" クラス= "ch.qos.logback.classic.AsyncAppender" > <! - デフォルトのログを失うことなく、キューの80%がいっぱいになった場合、その後。破棄TRACT、DEBUG、INFOレベルのログ- > < discardingThreshold > 0 </ discardingThreshold > <! - 。キューのデフォルトの深さを変更すると、この値はデフォルト値のパフォーマンスに影響を与える可能性が256である- > < QueueSizeに> 256 < / QueueSizeに> <! - 、追加のアペンダを追加するだけまで追加- > < アペンダREF- REF = "ACCESS_FILE" /> </ アペンダ> < ロガー名= "ASYNC_ACCESS_LOG" レベル= "情報" 加法= "false"に> < アペンダ-REF REF = "ASYNC" /> </ ロガー> <! - 日志输出级别- > < ルートレベル= "INFO" > < アペンダ-REF REF = "FILE" /> < アペンダ-REF REF = "STDOUT" /> </ ルート> </ 構成>
いくつかのロギングの要求へのアクセスでは、使用される非同期処理の方法は、あなただけは、ログ印刷したい場所を宣言する必要がありASYNC_ACCESS_LOGをすることができます。
プライベート 静的ロガーaccesslogger = LoggerFactory.getLogger( "ASYNC_ACCESS_LOG" ); プライベート 静的ロガーロガー= LoggerFactory.getLogger( "当前类名" ); accesslogger.info( "非同期印刷" ); logger.info( "同期印刷")