# 输出到指定文件
logging.file=./logs/application.log
# 输出到指定目录下(会写入到 spring.log 中)
logging.path=./logs当同时存在 logging.path 和 logging.file 时 logging.path 无效
向日志中添加自定义信息可以使用 MDC
类来实现
- 配置文件
logging.pattern.level=user:%X{user} %5p
MDC.put("user", "Hello");
2018-01-18 23:55:10.836 user:Hello INFO 7011 --- [nio-8080-exec-1] cn.com.hellowood.log.LogController : log 2
<root level="debug">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<configuration>
...
<!--类名或包名 -->
<logger name="cn.com.hellowood" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</configuration>
此时会打印在 CONSOLE上,如果将additivity改为true,则CONSOLE和root各会打印一次
<!-- 环境用逗号隔开 -->
<springProfile name="test,dev">
<logger name="cn.com.hellowood" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<springProperty name="LOG_PATH" value="SpringBoot-Log/out/logs"/>
<contextName>SpringBootLog</contextName>
<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" />
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%21.21t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%21.21t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--输出到控制台 ConsoleAppender-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 输出到文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${LOG_PATH}/SpringBootLog.log</file>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--归档的日志文件的路径,%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/SpringBootLog-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 若超过10M,日志文件会以索引0开始 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<!-- 追加方式记录日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<!--设置日志输出级别-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 指定包的日志级别 -->
<logger name="org.springframework" level="WARN" />
<!--指定最基础的日志输出级别-->
<root level="INFO">
<!--appender将会添加到这个logger-->
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
%p
: 输出日志信息优先级,即 DEBUG
, INFO
, WARN
, ERROR
, FATAL
, %d
: 输出日志时间点的日期或时间,默认格式为 ISO8601
,也可以在其后指定格式,比如: %d{yyyy-MM-dd HH:mm:ss.SSS}
,输出类似: 2018-01-19 14:47:03.735
%r
: 输出自应用启动到输出该log信息耗费的毫秒数 %c
: 输出日志信息所属的类目,通常就是所在类的全名 %t
: 输出产生该日志事件的线程名 %l
: 输出日志事件的发生位置,相当于 %C.%M(%F:%L)
的组合,包括类目名、发生的线程,以及在代码中的行数 %x
: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中 %%
: 输出一个 %
字符, %F
: 输出日志消息产生时所在的文件名称; %L
: 输出代码中的行号; %m
: 输出代码中指定的消息,产生的日志具体信息 %n
: 输出一个回车换行符,Windows平台为 /r/n
,Unix平台为 /n
输出日志信息换行 %
与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如: %20c
:指定输出 category
的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。 %-20c
:指定输出 category
的名称,最小的宽度是20,如果category的名称小于20的话, -
号指定左对齐。 %.30c
:指定输出 category
的名称,最大的宽度是30,如果 category
的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。 %20.30c
:如果 category
的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。 本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-05/152469.htm