日志配置logback
生活随笔
收集整理的這篇文章主要介紹了
日志配置logback
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在選擇項目日志框架時,發現log4j的作者開發了新的日志框架,據說性能提高不少,那就選它了,不過,除了配置上有點不習慣外,最重要的一點 ,打印線程號這個功能依然沒有(打印線程名這個東西是在是個雞肋)。在log4j的時代,改寫PatternLayout 就可以實現打印線程號,參考另外一篇文章日志配置log4j 打印線程號?。但是最新版的logback貌似不支持改寫PatternLayout, 糾結,擱置一段時間后,是在受不了,繼續研究,翻閱N篇文檔,雖然沒有找到具體方法,但是受到了一些啟發,最終找到方法了,在此與大家分享。
在pom.xml中引入依賴(如果你的項目不是Maven的,祝福你)
| 12345678910111213141516 | <dependency>????<groupId>org.slf4j</groupId>????<artifactId>slf4j-api</artifactId>????<version>${slf4j.version}</version></dependency><dependency>????<groupId>ch.qos.logback</groupId>????<artifactId>logback-classic</artifactId>????<version>1.0.13</version></dependency> <!-- 代碼直接調用log4j會被橋接到slf4j --><dependency>????<groupId>org.slf4j</groupId>????<artifactId>log4j-over-slf4j</artifactId>????<version>${slf4j.version}</version></dependency> |
新建Encoder類和Converter類
| 12345678910 | public class LogBackExEncoder extends PatternLayoutEncoder {????static {????????PatternLayout.defaultConverterMap.put("T", ThreadNumConverter.class.getName());????????PatternLayout.defaultConverterMap.put("threadNum", ThreadNumConverter.class.getName());????}????@Override????public void doEncode(ILoggingEvent event) throws IOException {????????super.doEncode(event);????}} |
| 123456789 | public class ThreadNumConverter extends ClassicConverter {????/**???????* 當需要顯示線程ID的時候,返回當前調用線程的ID???????*/????@Override????public String convert(ILoggingEvent event) {????????return String.valueOf(Thread.currentThread().getId());????}} |
在配置文件中調用自己的Encoder
| 123456 | <!-- 控制臺輸出 --><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">??<encoder charset="UTF-8" class="ch.qos.logback.core.encoder.LogBackExEncoder">????<pattern>[APP_LOG] %date [%T] %-5level (%logger{80}.%method:%line - %msg%n</pattern>??</encoder></appender> |
其中[%T] 就是用于打印線程號的
日志效果
附件列表
?
轉載于:https://www.cnblogs.com/juforg/p/3488740.html
總結
以上是生活随笔為你收集整理的日志配置logback的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载]Android.mk简介
- 下一篇: C# 获取随机可用端口号