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
以上就是springboot项目中怎么保存控制台日志的详细内容。