[successbox title=”默认配置”]
不推荐使用默认配置文件配置,不够灵活,对Log4j2日志框架等不够友好
日志文件名,如:my.log,或者是/var/log/my.log
日志级别配置,如:
logging.level.*=INFO
logging.level.org.springframework=DEBUG
[/successbox]
[successbox title=”logback”]
Spring Boot会默认加载classpath:logback-spring.xml或者classpath:logback-spring.groovy
1.application.properties添加如下配置。
[sourcecode language=”xml” title=”application.properties”]
添加日志文件
logging.config=classpath:logback-my.xml
[/sourcecode]
2.配置logback-my.xml文件。
[sourcecode language=”xml” title=”logback-my.xml”]
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 文件输出格式 -->
<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
<!-- test文件路径 -->
<property name="TEST_FILE_PATH" value="H:/My/Test/log" />
<!-- pro文件路径 -->
<property name="PRO_FILE_PATH" value="H:/My/Prod/log" />
<!-- 开发环境 -->
<springProfile name="dev">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<logger name="com.benzhu.xyz" level="debug"/>
<root level="info">
<appender-ref ref="CONSOLE" />
</root>
</springProfile>
<!-- 测试环境 -->
<springProfile name="test">
<!-- 每天产生一个文件 -->
<appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>${TEST_FILE_PATH}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 文件最大保存历史数量 -->
<MaxHistory>100</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
</appender>
<root level="info">
<appender-ref ref="TEST-FILE" />
</root>
</springProfile>
<!-- 生产环境 -->
<springProfile name="prod">
<appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PRO_FILE_PATH}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${PRO_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<MaxHistory>100</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
</appender>
<root level="info">
<appender-ref ref="PROD_FILE" />
</root>
</springProfile>
</configuration>
[/sourcecode]
3.在class类中要用到日志的时候。
[sourcecode language=”xml” title=”logback-my.xml”]
private static final Logger LOG = LoggerFactory.getLogger(类名.class);
//方法中用下面的方法调用。
LOG.info("导航到index!");
[/sourcecode]
结构图:
[/successbox]
[successbox title=”log4j2″]
1.配置pom.xml文件,添加如下内容。
[sourcecode language=”xml” title=”pom.xml”]
<dependency>
<!– 下面的两句本来就有的 给参考加入的地方 –>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!– 去除logback的依赖包 –>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!– 使用log4j2 –>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
[/sourcecode]
2.在classpath添加log4j2.xml或者log4j2-spring.xml(Spring Boot默认加载)。
1)开发环境的时候控制台输出日志配置。
[sourcecode language=”xml” title=”log4j2-spring.xml”]
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<properties>
<!– 文件输出格式 –>
<property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</property>
</properties>
<appenders>
<Console name="CONSOLE" target="system_out">
<PatternLayout pattern="${PATTERN}" />
</Console>
</appenders>
<loggers>
<logger name="com.no1.cz" level="debug" />
<root level="info">
<appenderref ref="CONSOLE" />
</root>
</loggers>
</configuration>
[/sourcecode]
2)测试环境输入到文件的日志配置。
[sourcecode language=”xml” title=”log4j2-spring.xml”]
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<properties>
<!-- 文件输出格式 -->
<property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</property>
</properties>
<!--先定义所有的appender -->
<appenders>
<!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
<RollingFile name="TEST-FILE" fileName="D:/My/Test/test.log"
filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout
pattern="${PATTERN}-%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
<SizeBasedTriggeringPolicy size="50MB" />
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
<DefaultRolloverStrategy max="20" />
</RollingFile>
</appenders>
<loggers>
<logger name="com.no1.cz" level="debug" />
<root level="info">
<appenderref ref="TEST-FILE" />
</root>
</loggers>
</configuration>
[/sourcecode]
3.当需要自定义文件的时候。
在application.properties中的一个配置。
比如在application-dev.properties中配置logging.cofig=classpath:log4j2-dev.xml。
然后再在og4j2-dev.xml写上面的内容。
[/successbox]
[successbox title=”比较”]
性能比较:log4j2和logback都优于log4j(不推荐使用)
配置方式:logback最简洁,Spring Boot默认,推荐使用。
[/successbox]