原则:
代码中尽量使用slf4j门面
尽量采用注解方式@Slf4j节省代码量

步骤:
1.排除springboot默认日志(logback)
1<dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter</artifactId> 4 <exclusions> 5 <exclusion> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-logging</artifactId> 8 </exclusion> 9 </exclusions> 10</dependency>
2.引入slf4j和log4j2的jar包
1<dependency> 2 <groupId>org.slf4j</groupId> 3 <artifactId>slf4j-api</artifactId> 4 <version>1.8.0-beta2</version> 5</dependency> 6 7<dependency> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-starter-log4j2</artifactId> 10</dependency>
3.添加log4j2的配置文件log4j2-spring.xml
1<?xml version="1.0" encoding="UTF-8"?> 2<Configuration> 3 <!--http://blog.csdn.net/u013066244/article/details/72461105--> 4 <!--https://github.com/alibaba/druid/wiki/Druid中使用log4j2进行日志输出--> 5 <Properties> 6 <!-- 配置日志文件输出目录 --> 7 <property name="LOG_HOME">/cwdata/logs</property> 8 <property name="SERVER_NAME">first</property> 9 </Properties> 10 11 <Appenders> 12 <!--这个输出控制台的配置--> 13 <Console name="Console" target="SYSTEM_OUT"> 14 <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%class{36}.%M: %L] - %msg%n" /> 15 </Console> 16 17 <!-- 按天第天备份一个日志 --> 18 <RollingFile name="RollingFile" fileName="${LOG_HOME}/xxx-web.log" 19 filePattern="${LOG_HOME}/xxx-web%d{yyyy-MM-dd}_%i.log"> 20 <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%class{36}.%M: %L] - %msg%n" /> 21 <Policies> 22 <!-- 每24小时更新一次 --> 23 <TimeBasedTriggeringPolicy modulate="true" interval="1"/> 24 <SizeBasedTriggeringPolicy size="300 MB"/> 25 </Policies> 26 <!-- 最多备份30个 --> 27 <DefaultRolloverStrategy fileIndex="max" max="60" /> 28 </RollingFile> 29 30 <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用--> 31 <!-- 32 <File name="Log_test" fileName="${LOG_HOME}/test.log" append="false"> 33 <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%class{36}.%M: %L] - %msg%n"/> 34 </File> 35 --> 36 37 </Appenders> 38 39 <Loggers> 40 <Root level="info"> 41 <AppenderRef ref="Console" /> 42 <AppenderRef ref="RollingFile" /> 43 <!--<AppenderRef ref="AsyncMail"/>--> 44 </Root> 45 46 <!--<logger name="com.cloudwave.skm" level="error" additivity="false">--> 47 <!--<AppenderRef ref="AsyncMail"/>--> 48 <!--</logger>--> 49 50 <logger name="org.springframework" level="info" additivity="false"> 51 <AppenderRef ref="Console" /> 52 <AppenderRef ref="RollingFile" /> 53 </logger> 54 <logger name="org.mybatis" level="debug" additivity="false"> 55 <AppenderRef ref="Console" /> 56 <AppenderRef ref="RollingFile" /> 57 </logger> 58 <logger name="org.mybatis.spring" level="info" additivity="false"> 59 <AppenderRef ref="Console" /> 60 <AppenderRef ref="RollingFile" /> 61 </logger> 62 <logger name="java.sql.Connection" level="info" additivity="false"> 63 <AppenderRef ref="Console" /> 64 <AppenderRef ref="RollingFile" /> 65 </logger> 66 <logger name="java.sql.Statement" level="info" additivity="false"> 67 <AppenderRef ref="Console" /> 68 <AppenderRef ref="RollingFile" /> 69 </logger> 70 <logger name="java.sql.PreparedStatement" level="info" additivity="false"> 71 <AppenderRef ref="Console" /> 72 <AppenderRef ref="RollingFile" /> 73 </logger> 74 <logger name="java.sql.ResultSet" level="info" additivity="false"> 75 <AppenderRef ref="Console" /> 76 <AppenderRef ref="RollingFile" /> 77 </logger> 78 <logger name="com.cloudwave.skm.db.mapper" level="TRACE" additivity="false"> 79 <AppenderRef ref="Console" /> 80 <AppenderRef ref="RollingFile" /> 81 </logger> 82 83 <logger name="org.codehaus.jackson" level="error" additivity="false"> 84 <AppenderRef ref="Console" /> 85 <AppenderRef ref="RollingFile" /> 86 </logger> 87 88 <!--记录druid-sql的记录--> 89 <logger name="druid.sql.Statement" level="debug" additivity="false"> 90 <AppenderRef ref="Console" /> 91 <appender-ref ref="RollingFile"/> 92 </logger> 93 <logger name="druid.sql.Statement" level="debug" additivity="false"> 94 <AppenderRef ref="Console" /> 95 <appender-ref ref="RollingFile"/> 96 </logger> 97 98 <!--log4j2 自带过滤日志--> 99 <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" /> 100 <Logger name="org.apache.catalina.util.LifecycleBase" level="error" /> 101 <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" /> 102 <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/> 103 <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" /> 104 <Logger name="org.crsh.plugin" level="warn" /> 105 <logger name="org.crsh.ssh" level="warn"/> 106 <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" /> 107 <Logger name="org.hibernate.validator.internal.util.Version" level="warn" /> 108 <logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="warn"/> 109 <logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/> 110 <logger name="org.thymeleaf" level="warn"/> 111 </Loggers> 112</Configuration>
4.在application.yml中配置日志属性
1# 日志配置 2logging: 3# 指定日志配置文件位置 4 config: classpath:log4j2-spring.xml 5# 设置具体打印策略 6 level: 7 com.xx: info 8 org.springframework: WARN 9 org.spring.springboot.dao: debug
5.代码中使用
maven添加lombok插件依赖,在任意类中加上@Slf4j注解,然后使用log.info()打印日志
