slf4j+log4j2的配置
阿新 • • 發佈:2018-06-30
tex AR tro slf4j pom.xml end 依賴 tid 詳細 可能出現警告的jar包:log4j-web
昨天自己測試了一下slf4j+log4j2的配置,可以正常使用,雖然配置十分簡單,但好記性不如爛筆頭,想想還是記錄下來吧。
運行的環境:jdk1.7、tomcat7、Maven的web項目
1.在新建的maven項目的pom文件中添加jar包依賴(依賴代碼在步驟末尾):
需要添加依賴的jar包有:
slf4j的api接口包:slf4j-api
log4j2的核心包:log4j-core
log4j2的api接口包:log4j-api
slf4j對應log4j2日誌框架的驅動包:log4j-slf4j-impl
log4j2的異步日誌功能包:com.lmax.disruptor
解決web項目log4j
2.配置log4j2.xml日誌配置文件(日誌配置文件內容放在步驟末尾):
·日誌配置文件默認讀取路徑為src/main/resource
·若文件放置在默認讀取路徑下則無需配置讀取路徑
·若文件放置到其他路徑下則需要在web.xml中設置日誌配置文件的讀取路徑,代碼如下:
<context-param> <param-name>log4jConfiguration</param-name> <param-value>classpath:log4j2.xml</param-value></context-param>
3.在代碼中使用日誌功能:
1 import org.slf4j.Logger; 2 import org.slf4j.LoggerFactory; 3 4 public class logTest { 5 6 // 通過slf4j接口創建Logger對象 7 private static final Logger logger = LoggerFactory.getLogger(logTest.class); 8 9 public static void main(String[] args) {10 logger.info("this is info"); 11 logger.error("this is error"); 12 } 13 }
運行效果:
關於日誌配置文件的詳細說明請參考log4j2配置文件log4j2.xml詳解,以下是pom.xml需要加入的jar包依賴以及日誌配置文件log4j2.xml內容示例:
pom.xml需要加入的jar包依賴:
<properties> <!-- jar包版本設置 --> <slf4j.version>1.7.21</slf4j.version> <log4j.version>2.11.0</log4j.version> </properties> <dependencies> <!-- 導入slf4j的接口包以及對應日誌框架的驅動包 --> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <!--用於slf4j與log4j2保持橋接 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <scope>runtime</scope> <version>${log4j.version}</version> </dependency> <!-- 導入日誌框架核心包與接口包 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <scope>runtime</scope> <version>${log4j.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j.version}</version> </dependency> <!--用於解決web環境下關閉服務器時可能出現的log4j線程無法及時關閉的warn,web工程需要包含log4j-web,非web工程不需要 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <scope>runtime</scope> <version>${log4j.version}</version> </dependency> <!--使用log4j2的AsyncLogger時需要包含disruptor --> <!-- https://mvnrepository.com/artifact/com.lmax/disruptor --> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <scope>runtime</scope> <version>3.4.2</version> </dependency> </dependencies>
日誌配置文件內容示例:
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!-- 4 日誌說明: 5 6 (1)請根據實際情況配置各項參數 7 8 (2)需要註意日誌文件備份數和日誌文件大小,註意預留目錄空間 9 10 (3)實際部署的時候backupFilePatch變量需要修改成linux目錄 11 12 --> 13 14 <configuration status="error"> 15 16 <Properties> 17 18 <Property name="fileName">front.log</Property> 19 20 <Property name="backupFilePatch">d:/usr/front/log/</Property> 21 22 </Properties> 23 24 <!--先定義所有的appender--> 25 26 <appenders> 27 28 <!--這個輸出控制臺的配置--> 29 30 <Console name="Console" target="SYSTEM_OUT"> 31 32 <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)--> 33 34 <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> 35 36 <!--這個都知道是輸出日誌的格式--> 37 38 <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" /> 39 40 </Console> 41 42 43 44 <!--這個會打印出所有的信息,每次大小超過size,則這size大小的日誌會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔--> 45 46 <RollingFile name="RollingFile" fileName="${backupFilePatch}/${fileName}" 47 48 filePattern="${backupFilePatch}$${date:yyyy-MM}/app-%d{yyyyMMddHHmmssSSS}.log.gz"> 49 50 <PatternLayout 51 52 pattern="%d{yyyy-MM-dd HH:mm:ss.SSS z} %-5level %class{36} %L %M - %msg%xEx%n" /> 53 54 55 56 <!-- 日誌文件大小 --> 57 58 <SizeBasedTriggeringPolicy size="20MB" /> 59 60 <!-- 最多保留文件數 --> 61 62 <DefaultRolloverStrategy max="20"/> 63 64 </RollingFile> 65 66 </appenders> 67 68 69 70 <!--然後定義logger,只有定義了logger並引入的appender,appender才會生效--> 71 72 <loggers> 73 74 <!--建立一個logger,此logger監聽name對應的包名下的日誌輸出,level表示日誌級別--> 75 76 <Logger name="com.testlog" level="trace" 77 78 additivity="true"> 79 80 <AppenderRef ref="RollingFile" /> 81 82 </Logger> 83 84 <!--建立一個默認的root的logger--> 85 86 <Root level="error"> 87 88 <!-- 在root中關聯appender才會在對應的位置輸出日誌,定義一個輸出到文件的appender也必須關聯到此處才會保存日誌到文件 --> 89 90 <AppenderRef ref="Console" /> 91 92 </Root> 93 94 </loggers> 95 96 </configuration>
slf4j+log4j2的配置