SpringBoot项目中控制台日志的保存配置操作

SpringBoot 控制台日志的保存配置

情景:SpringBoot项目中需要把控制台日志保存下来。

实现方法:

1.在配置文件application-prod.yml

配置如下:

logging:  config: classpath:logback-spring-prod.xml

2.logback-spring-prod.xml

这个文件是记录控制台打印日志保存的路径配置如下:

<?xml version="1.0" encoding="UTF-8"?> <!-- 分级别异步文件日志输出配置 --><configuration>    <!-- 日志级别 -->    <property name="logLevel" value="INFO"></property>    <!-- 日志地址 -->    <property name="logPath" value="/usr/server/shop/logs/"></property>    <property name="logPathDebug" value="/usr/server/shop/logs/debug/"></property>    <property name="logPathInfo" value="/usr/server/shop/logs/info/"></property>    <property name="logPathWarn" value="/usr/server/shop/logs/warn/"></property>    <property name="logPathError" value="/usr/server/shop/logs/error/"></property>    <!-- 最大保存时间 -->    <property name="maxHistory" value="30"/>    <!-- 异步缓冲队列的深度,该值会影响性能.默认值为256 -->    <property name="queueSize" value="512"></property>    <!--日志文件名前缀-->    <property name="name" value="shop_prod"></property>     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <pattern>%black(%contextName -) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{60}) - %gray(%msg%n)</pattern>        </encoder>    </appender>     <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>DEBUG</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>        <file>${logPathDebug}/${name}_debug.log</file>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>${logPathDebug}/${name}_debug.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>            <maxHistory>${maxHistory}</maxHistory>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>50MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>        </encoder>    </appender>     <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>INFO</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>        <file>${logPathInfo}/${name}_info.log</file>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>${logPathInfo}/${name}_info.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>            <maxHistory>${maxHistory}</maxHistory>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>50MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>        </encoder>    </appender>     <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>WARN</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>        <file>${logPathWarn}/${name}_warn.log</file>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>${logPathWarn}/${name}_warn.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>            <maxHistory>${maxHistory}</maxHistory>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>50MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>        </encoder>    </appender>     <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>ERROR</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>        <file>${logPathError}/${name}_error.log</file>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>${logPathError}/${name}_error.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>            <maxHistory>${maxHistory}</maxHistory>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>50MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>        </encoder>    </appender>     <appender name="ASYNC_LOG_DEBUG" class="ch.qos.logback.classic.AsyncAppender">        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->        <discardingThreshold>0</discardingThreshold>        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->        <queueSize>${queueSize}</queueSize>        <appender-ref ref="FILE_DEBUG"/>    </appender>     <appender name="ASYNC_LOG_INFO" class="ch.qos.logback.classic.AsyncAppender">        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->        <discardingThreshold>0</discardingThreshold>        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->        <queueSize>${queueSize}</queueSize>        <appender-ref ref="FILE_INFO"/>    </appender>     <appender name="ASYNC_LOG_WARN" class="ch.qos.logback.classic.AsyncAppender">        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->        <discardingThreshold>0</discardingThreshold>        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->        <queueSize>${queueSize}</queueSize>        <appender-ref ref="FILE_WARN"/>    </appender>     <appender name="ASYNC_LOG_ERROR" class="ch.qos.logback.classic.AsyncAppender">        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->        <discardingThreshold>0</discardingThreshold>        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->        <queueSize>${queueSize}</queueSize>        <appender-ref ref="FILE_ERROR"/>    </appender>     <root level="${logLevel}">        <!-- appender referenced after it is defined -->        <appender-ref ref="STDOUT"/>        <appender-ref ref="ASYNC_LOG_DEBUG"/>        <appender-ref ref="ASYNC_LOG_INFO"/>        <appender-ref ref="ASYNC_LOG_WARN"/>        <appender-ref ref="ASYNC_LOG_ERROR"/>    </root> </configuration>

注意:

<property name="logPath" value="/usr/server/shop/logs/"></property> 

中日志存放的路径在/usr/server/shop/logs/下存放。

SpringBoot项目怎么保存服务的运行时日志

这个问题相对很简单,只需要完成两个步骤

配置log4j输出日志的文件

在pom中需要引用lombok依赖,版本跟随你的springboot夫版本即可

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional></dependency>
<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="60 seconds"debug="false"><contextName>StudentContext</contextName><property name="log.path" value="./logs" /><!--输出到控制台 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{76}.%M\(%line\) - %msg%n</pattern><charset>UTF-8</charset></encoder></appender><!-- 全部日志 --><appender name="all" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/student/student.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{76}.%M\(%line\) - %msg%n</pattern><charset>UTF-8</charset></encoder></appender><!-- 输出到warn --><appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/student/student.warn.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{76}.%M\(%line\) - %msg%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日志 --><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 输出到error --><appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/student/student.error.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{76}.%M\(%line\) - %msg%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 --><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><root level="info"><appender-ref ref="console" /><appender-ref ref="all" /><appender-ref ref="warn" /><appender-ref ref="error" /></root></configuration>

log4j输出日志的文件,将其放在resources下即可,注意fileNamePattern这个标签中的东西换成标识你微服务作用的,比如我写的学生管理系统,所以用的是student

在application指定此配置文件的位置

logging:  level:    com.netflix.discovery.shared.resolver.aws.ConfigClusterResolver: WARN  config: classpath:logback-common.xml

完毕,当你将项目部署到linux服务器。日志就会产生,每天的日志是一个文件,非常方便。以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

一个人,一条路,人在途中,心随景动,从起点,

SpringBoot项目中控制台日志的保存配置操作

相关文章:

你感兴趣的文章:

标签云: