logback官网: http://logback.qos.ch/
slf4j官网:www.slf4j.org/
分别下载压缩包,解压得到jar包和源代码,文档
在只需要一般日志功能的情况下只分别需要
logback-core-0.9.30.jar
logback-classic-0.9.30.jar
slf4j-api-1.6.2.jar
注意,如果添加包过多,则可能导致冲突,bind出错
编写logback.xml,设定输出日志到文件的方式,放入到工程目录即可。 可以在工程初始化的时候,编写加载配置文件类,加载配置文件。 也可以命名为:logback.xml或者logback-test.xml或者logback.groovy, Logback会自动到当前工程目录进行搜索上面的三个配置文件。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<property name="log.dir" value="logs" />
<appender name="activity" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/activity.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/activity.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="SessionManagement" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/session.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %p [%c] [%t] %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/session.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="KPI" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/KPI.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/KPI.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="sensitive" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/sensitive.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/sensitive.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="infoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/info.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %p [%c] [%t] %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/info.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/error.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %p [%c] [%t] %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/error.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="debugLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/debug.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %p [%c] [%t] %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="location" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/location.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/location.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="location_history" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/location_history.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}/location_history.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<logger name="activity" additivity="false" level="INFO">
<appender-ref ref="activity" />
</logger>
<logger name="SessionManagement" additivity="false" level="INFO">
<appender-ref ref="SessionManagement" />
</logger>
<logger name="KPI" additivity="false" level="INFO">
<appender-ref ref="KPI" />
</logger>
<logger name="location" additivity="false" level="INFO">
<appender-ref ref="location" />
</logger>
<logger name="location_history" additivity="false" level="INFO">
<appender-ref ref="location_history" />
</logger>
<logger name="sensitive" additivity="false" level="INFO">
<appender-ref ref="sensitive" />
</logger>
<logger name="org.springframework.beans.factory" level="ERROR" />
<root level="INFO">
<appender-ref ref="infoLog" />
<appender-ref ref="errorLog" />
<appender-ref ref="debugLog" />
</root>
</configuration>
编写测试用例
public static void main(String []args) {
Logger logger = LoggerFactory.getLogger(Main.class);
logger.debug("Hello world.");
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
}