前言
最近项目中使用springboot+logback日志,正常启动以后服务器上面出现,异样的日志文件
如图所示问题:
配置文件如下配置的:
<?xml version
="1.0" encoding
="UTF-8"?>
<configuration scan
="true" scanPeriod
="60 seconds">
<property name
="logging.file.path" value
="${logging.file.path}"/>
<!-- 都说spring boot使用日志需要引入这个,但是我引入了之后总是打印两份日志,所以我去除了,并不影响使用
-->
<!-- <include resource
="org/springframework/boot/logging/logback/base.xml"/> -->
<!-- 控制台设置
-->
<appender name
="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder
>
<pattern
>%-4relative
[%thread
] %-5level
%logger
{35} - %msg
%n
</pattern
>
</encoder
>
</appender
>
<!-- INFO
-->
<appender name
="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 ,注意LOG_PATH是默认值,
它的配置对应application
.properties里的logging
.path值
-->
<file
>$
{logging
.file
.path
}/info
/info
.log
</file
>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称
-->
<fileNamePattern
>$
{logging
.file
.path
}/info
/info
-%d
{yyyy
-MM
-dd
}.log
</fileNamePattern
>
<!-- 文件最大保存历史数量
-->
<MaxHistory
>30</MaxHistory
>
</rollingPolicy
>
<encoder
>
<pattern
>$
{logging
.pattern
.file
}</pattern
>
</encoder
>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level
>INFO
</level
>
<onMatch
>ACCEPT
</onMatch
>
<onMismatch
>DENY
</onMismatch
>
</filter
>
</appender
>
<!-- DEBUG
-->
<appender name
="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 ,注意LOG_PATH是默认值,
它的配置对应application
.properties里的logging
.path值
-->
<file
>$
{logging
.file
.path
}/debug
/debug
.log
</file
>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称
-->
<fileNamePattern
>$
{logging
.file
.path
}/debug
/debug
-%d
{yyyy
-MM
-dd
}.log
</fileNamePattern
>
<!-- 文件最大保存历史数量
-->
<MaxHistory
>30</MaxHistory
>
</rollingPolicy
>
<encoder
>
<pattern
>$
{logging
.pattern
.file
}</pattern
>
</encoder
>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level
>DEBUG
</level
>
<onMatch
>ACCEPT
</onMatch
>
<onMismatch
>DENY
</onMismatch
>
</filter
>
</appender
>
<!-- WARN
-->
<appender name
="warnAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 ,注意LOG_PATH是默认值,
它的配置对应application
.properties里的logging
.path值
-->
<file
>$
{logging
.file
.path
}/warn
/warn
.log
</file
>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称
-->
<fileNamePattern
>$
{logging
.file
.path
}/warn
/warn
-%d
{yyyy
-MM
-dd
}.log
</fileNamePattern
>
<!-- 文件最大保存历史数量
-->
<MaxHistory
>30</MaxHistory
>
</rollingPolicy
>
<encoder
>
<pattern
>$
{logging
.pattern
.file
}</pattern
>
</encoder
>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level
>WARN
</level
>
<onMatch
>ACCEPT
</onMatch
>
<onMismatch
>DENY
</onMismatch
>
</filter
>
</appender
>
<!-- ERROR
-->
<appender name
="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 ,注意LOG_PATH是默认值,
它的配置对应application
.properties里的logging
.path值
-->
<file
>$
{logging
.file
.path
}/error
/error
.log
</file
>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称
-->
<fileNamePattern
>$
{logging
.file
.path
}/error
/error
-%d
{yyyy
-MM
-dd
}.log
</fileNamePattern
>
<!-- 文件最大保存历史数量
-->
<MaxHistory
>30</MaxHistory
>
</rollingPolicy
>
<encoder
>
<pattern
>$
{logging
.pattern
.file
}</pattern
>
</encoder
>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level
>ERROR
</level
>
<onMatch
>ACCEPT
</onMatch
>
<onMismatch
>DENY
</onMismatch
>
</filter
>
</appender
>
<logger name
="org.springframework" additivity
="false">
<level value
="ERROR" />
<appender
-ref ref
="STDOUT" />
<appender
-ref ref
="errorAppender" />
</logger
>
<!-- 由于启动的时候,以下两个包下打印debug级别日志很多 ,所以调到ERROR
-->
<logger name
="org.apache.tomcat.util" additivity
="false">
<level value
="ERROR"/>
<appender
-ref ref
="STDOUT"/>
<appender
-ref ref
="errorAppender"/>
</logger
>
<!-- 默认spring boot导入hibernate很多的依赖包,启动的时候,会有hibernate相关的内容,直接去除
-->
<logger name
="org.hibernate.validator" additivity
="false">
<level value
="ERROR"/>
<appender
-ref ref
="STDOUT"/>
<appender
-ref ref
="errorAppender"/>
</logger
>
<root level
="INFO"><!--INFO
-->
<appender
-ref ref
="STDOUT"/>
<appender
-ref ref
="infoAppender"/>
<appender
-ref ref
="debugAppender"/>
<appender
-ref ref
="warnAppender"/>
<appender
-ref ref
="errorAppender"/>
</root
>
</configuration
>
定位问题,错误点应该在这里: 然后这样获取:
完整的日志文件
<?xml version
="1.0" encoding
="UTF-8"?>
<configuration scan
="true" scanPeriod
="60 seconds">
<springProperty name
="LOG_PATH" source
="logging.file.path"/>
<!-- 都说spring boot使用日志需要引入这个,但是我引入了之后总是打印两份日志,所以我去除了,并不影响使用
-->
<!-- <include resource
="org/springframework/boot/logging/logback/base.xml"/> -->
<!-- 控制台设置
-->
<appender name
="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder
>
<pattern
>%-4relative
[%thread
] %-5level
%logger
{35} - %msg
%n
</pattern
>
</encoder
>
</appender
>
<!-- INFO
-->
<appender name
="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 ,注意LOG_PATH是默认值,
它的配置对应application
.properties里的logging
.path值
-->
<file
>$
{LOG_PATH
}/info
/info
.log
</file
>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称
-->
<fileNamePattern
>$
{LOG_PATH
}/info
/info
-%d
{yyyy
-MM
-dd
}.log
</fileNamePattern
>
<!-- 文件最大保存历史数量
-->
<MaxHistory
>30</MaxHistory
>
</rollingPolicy
>
<encoder
>
<pattern
>[%d
{yyyy
-MM
-dd HH
:mm
:ss
}] -- [%-5p
]: [%c
] -- %m
%n
</pattern
>
</encoder
>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level
>INFO
</level
>
<onMatch
>ACCEPT
</onMatch
>
<onMismatch
>DENY
</onMismatch
>
</filter
>
</appender
>
<!-- DEBUG
-->
<appender name
="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 ,注意LOG_PATH是默认值,
它的配置对应application
.properties里的logging
.path值
-->
<file
>$
{LOG_PATH
}/debug
/debug
.log
</file
>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称
-->
<fileNamePattern
>$
{LOG_PATH
}/debug
/debug
-%d
{yyyy
-MM
-dd
}.log
</fileNamePattern
>
<!-- 文件最大保存历史数量
-->
<MaxHistory
>30</MaxHistory
>
</rollingPolicy
>
<encoder
>
<pattern
>[%d
{yyyy
-MM
-dd HH
:mm
:ss
}] -- [%-5p
]: [%c
] -- %m
%n
</pattern
>
</encoder
>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level
>DEBUG
</level
>
<onMatch
>ACCEPT
</onMatch
>
<onMismatch
>DENY
</onMismatch
>
</filter
>
</appender
>
<!-- WARN
-->
<appender name
="warnAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 ,注意LOG_PATH是默认值,
它的配置对应application
.properties里的logging
.path值
-->
<file
>$
{LOG_PATH
}/warn
/warn
.log
</file
>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称
-->
<fileNamePattern
>$
{LOG_PATH
}/warn
/warn
-%d
{yyyy
-MM
-dd
}.log
</fileNamePattern
>
<!-- 文件最大保存历史数量
-->
<MaxHistory
>30</MaxHistory
>
</rollingPolicy
>
<encoder
>
<pattern
>[%d
{yyyy
-MM
-dd HH
:mm
:ss
}] -- [%-5p
]: [%c
] -- %m
%n
</pattern
>
</encoder
>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level
>WARN
</level
>
<onMatch
>ACCEPT
</onMatch
>
<onMismatch
>DENY
</onMismatch
>
</filter
>
</appender
>
<!-- ERROR
-->
<appender name
="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 ,注意LOG_PATH是默认值,
它的配置对应application
.properties里的logging
.path值
-->
<file
>$
{LOG_PATH
}/error
/error
.log
</file
>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称
-->
<fileNamePattern
>$
{LOG_PATH
}/error
/error
-%d
{yyyy
-MM
-dd
}.log
</fileNamePattern
>
<!-- 文件最大保存历史数量
-->
<MaxHistory
>30</MaxHistory
>
</rollingPolicy
>
<encoder
>
<pattern
>[%d
{yyyy
-MM
-dd HH
:mm
:ss
}] -- [%-5p
]: [%c
] -- %m
%n
</pattern
>
</encoder
>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level
>ERROR
</level
>
<onMatch
>ACCEPT
</onMatch
>
<onMismatch
>DENY
</onMismatch
>
</filter
>
</appender
>
<logger name
="org.springframework" additivity
="false">
<level value
="ERROR" />
<appender
-ref ref
="STDOUT" />
<appender
-ref ref
="errorAppender" />
</logger
>
<!-- 由于启动的时候,以下两个包下打印debug级别日志很多 ,所以调到ERROR
-->
<logger name
="org.apache.tomcat.util" additivity
="false">
<level value
="ERROR"/>
<appender
-ref ref
="STDOUT"/>
<appender
-ref ref
="errorAppender"/>
</logger
>
<!-- 默认spring boot导入hibernate很多的依赖包,启动的时候,会有hibernate相关的内容,直接去除
-->
<logger name
="org.hibernate.validator" additivity
="false">
<level value
="ERROR"/>
<appender
-ref ref
="STDOUT"/>
<appender
-ref ref
="errorAppender"/>
</logger
>
<root level
="INFO"><!--INFO
-->
<appender
-ref ref
="STDOUT"/>
<appender
-ref ref
="infoAppender"/>
<appender
-ref ref
="debugAppender"/>
<appender
-ref ref
="warnAppender"/>
<appender
-ref ref
="errorAppender"/>
</root
>
</configuration
>
日志文件名称 配置文件这么配置: 配置bootstrap.yml文件.boostrap.yml优先于application.yml加载
logging
:
config
:
classpath
: logback
-spring
.xml
file
:
path
: /usr
/local
/server
-test
/xxx
-log
pattern
:
console
: "[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n"
file
: "[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n"
测试:
<dependency
>
<groupId
>org.springframework.boot
</groupId
>
<artifactId
>spring-boot-starter
</artifactId
>
<exclusions
>
<exclusion
>
<groupId
>org.springframework.boot
</groupId
>
<artifactId
>spring-boot-starter-logging
</artifactId
>
</exclusion
>
</exclusions
>
</dependency
>