日志打印输出到控制台以及文件
一、application.properties文件配置
- #root 日志级别以WARN级别输出
- logging.level.root=WARN
- #springframework.web日志以DEBUG级别输出
- logging.level.org.springframework.web=DEBUG
- #配置控制台日志显示格式
- logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
- #配置文件中日志显示格式
- logging.pattern.file=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
二、application-native/prod.properties文件配置
- #相对路径
- #logging.file.name=log/my.log
- #把日志信息写入日志文件,会自动生成
- logging.file.path=/logs
三、logback-spring.xml文件配置
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration scan="true" scanPeriod="60 seconds" debug="false">
- <contextName>logback</contextName>
-
- <springProperty scope="context" name="LOG_PATH" source="logging.file.path"/>
-
- <!--控制台输出内容的颜色转换以及格式-->
- <substitutionProperty name="logging.pattern.console"
- value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
- <!--日志文件输出内容的格式-->
- <substitutionProperty name="logging.pattern.file"
- value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
-
- <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
- <conversionRule conversionWord="wex"
- converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
- <conversionRule conversionWord="wEx"
- converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
-
- <!-- -- 输出到控制台-->
- <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
- <!--控制台使用layout节点-->
- <layout class="ch.qos.logback.classic.PatternLayout">
- <pattern>
- ${logging.pattern.console}
- </pattern>
- </layout>
- </appender>
-
- <!--按天生成日志-->
- <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <Prudent>true</Prudent>
- <!--滚动策略,我配置了按天生成日志文件-->
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <!--相对路径,生成的文件就在项目根目录下-->
- <FileNamePattern>
- ${LOG_PATH}/%d{yyyy-MM}/%d{yyyy-MM-dd}.log
- </FileNamePattern>
- <!--注意超过365天的日志文件会被删除,即使已经按天分开也会删除-->
- <MaxHistory>365</MaxHistory>
- </rollingPolicy>
- <!--日志文件里只保存ERROR及以上级别的日志-->
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>DEBUG</level>
- </filter>
- <!--文件使用encoder节点-->
- <encoder>
- <Pattern>
- ${logging.pattern.file}
- </Pattern>
- </encoder>
- </appender>
-
- <!--这个logger里的配置相当于之前yml里的logging.level.com.lpc: trace-->
- <!--additivity的作用-->
- <!--true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
- <!--而这个logger里没配置appender,所以得交给root打印-->
- <!--所以com.lpc包里的日志从TRACE级别开始-->
- <!--其他包里的日志根据root的配置从INFO级别开始打印-->
- <logger name="com.uama" level="INFO" additivity="true">
- </logger>
-
- <root level="DEBUG">
- <appender-ref ref="console"/>
- <appender-ref ref="file"/>
- </root>
-
- </configuration>
注意点:
- logging.file.path与logging.file.name两者生效其一
- logback-spring.xml文件中若注入application.properties中声明的值,则需要在logback-spring.xml文件中使用<springProperty>标签。
<springProperty scope="context" name="LOG_PATH" source="logging.file.path"/>
<springProperty>标签与<property>无大异,其中,name正常声明,source类似于value,不用”${}"。