1、导包,如果是springboot项目就不用,spring-boot-starter里已经导过了
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.12</version>
<scope>compile</scope>
</dependency>
2、在项目resources目录下添加配置文件:logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<contextName>logback</contextName>
<property name="log.path" value="logs"></property>
<property name="Console_Pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%logger{50}] - %msg%n"/>
<!-- 定义一个输出到控制台的日志追加器对象 -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 设置输出到控制台的日志为红色,默认值是System.out 字体为黑色 -->
<target>System.err</target>
<!-- 设置日志格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>${Console_Pattern}</Pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 定义一个输出到文件的日志追加器对象 -->
<appender name="fileInfo" class="ch.qos.logback.core.FileAppender">
<file>${log.path}/fileInfo.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %c.%M:[%logger{50}] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 定义一个输出到html文件的日志追加器对象 -->
<appender name="FileInfo" class="ch.qos.logback.core.FileAppender">
<file>${log.path}/htmlFileInfo.html</file>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<pattern class="ch.qos.logback.classic.html.HTMLLayout">%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread]%-5level%c.%M:[%logger{50}] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 定义一个输出到可拆分成多个文件的日志追加器对象 -->
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/rollFile.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 指定拆分规则 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 按照时间和格式声明文件名 -->
<fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>1KB</maxFileSize>
</rollingPolicy>
</appender>
<!-- 时间滚动输出 level为 INFO 日志 -->
<appender name="RollingFileInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天日志归档路径以及格式 -->
<fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>1KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录info级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--指定一个异步日志追加器-->
<appender name="async" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="rollingFile"/>
</appender>
<root level="ALL">
<appender-ref ref="Console"/>
<appender-ref ref="rollingFile"/>
</root>
<!-- 自定义一个日志记录器,
name:指定要记录日志的包名,
level:指定日志级别
additivity:是否继承root节点,默认是true继承。默认情况下子Logger会继承父Logger的appender,
也就是说子Logger会在父Logger的appender里输出。
若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。
子标签<appender-ref> 指定日志追加器
-->
<logger name="com.log" level="INFO" additivity="false">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileInfo"/>
</logger>
</configuration>
3、使用
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggerTest {
Logger logger = LoggerFactory.getLogger("recommend");
@Test
public void rr(){
for (int i = 0; i < 100; i++) {
logger.info("这是一个测试");
}
}
}