logging.file.path

    技术2022-07-11  81

    前言

    最近项目中使用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>
    Processed: 0.013, SQL: 9