常用日誌框架
日誌庫適配器:老工程直接使用日誌api打印的日誌,如果需要改成標準的門面模式(例如slf4j+logback組合),這就需要日誌庫適配器來完成從舊日誌庫的api到slf4j的路由,這樣在不改動原來代碼的情況下也能使用slf4j統一管理日誌。
日誌門面:提供一套標準的日誌記錄接口。
日誌門面適配器:slf4j出現之前的日誌框架(如log4j)沒有實現slf4j接口,要使用這套規範(slf4j+log4j),需要使用日誌門面適配器(slf4j-log4j12)來解決兼容性問題。
日誌庫(具體實現):日誌具體的實現。
slf4j+logback
<dependency>
<groupid>org.slf4</ groupid>
<artifactid>slf4j-api</artifactid>
</dependency>
<dependency>
<groupid>ch.qos.logback</groupid>
<artifactid>logback-classic</artifactid>
</dependency>
<dependency>
<groupid>ch.qos.logback</groupid>
<artifactid>logback-core</artifactid>
</dependency>
slf4j+log4j
<dependency>
<groupid>org.slf4</ groupid>
<artifactid>slf4j-api</artifactid>
</dependency>
<dependency>
<groupid>org.slf4</ groupid>
<artifactid>slf4j-log4j12</artifactid>
</dependency>
<dependency>
<groupid>log4j</ groupid>
<artifactid>log4j</artifactid>
</dependency>
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="logPath" value="./log"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="INFO"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}/info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>50MB</MaxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="ERROR"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}/error.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>50MB</MaxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="INFO" />
<appender-ref ref="ERROR" />
</root>
<logger name="errorLog" level="error" additivity="false">
<appender-ref ref="ERROR" />
</logger>
</configuration>
log4j.properties
#設置Logger輸出級別和輸出目的地
log4j.rootLogger=debug,stdout,logfile,info,error
#表示Logger不會在父Logger的appender裏輸出,默認爲true
log4j.additivity.org.apache=false
#把日誌信息輸出到控制檯
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#日誌輸出格式
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.stdout.layout.ConversionPattern=%d%I%m%n
#每天產生一個日誌文件 info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.info.Encoding=GBK
log4j.appender.info.DatePattern='.'yyyy-MM-dd
log4j.appender.info.File=logs/project-name/info.log
log4j.appender.info.Threshold = INFO
#每天產生一個日誌文件 error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern==%d [%t] %-5p %c - %m%n
log4j.appender.error.Encoding=GBK
log4j.appender.error.DatePattern='.'yyyy-MM-dd
log4j.appender.error.File=logs/project-name/error.log
log4j.appender.error.Threshold = ERROR