概述
springboot的日志框架别的博客上说的也比较多,很多都可用。但是我这里是有一些特殊的项目经历,值得一说。
原本项目中使用的log4j2,也就是上一篇 springboot整合日志(一)----------log4j2 中讲的。结果由于要部署到京东云上,他们的日志收集系统要求用logback的控制台输出日志。通过控制台就能收集到日志,并声称日志文件。所以我们的项目就要改造成logback的日志系统。
然后发现稍微调整log4j2的日志配置就能实现logback控制台输出。调整如下:
1.pom.xml中的日志依赖改为logback。
2. 删除掉resource文件下的log4j2的日志配置。
3.在yml文件中删除掉对应日志文件的引入即可。即下面这行去掉
logging:
config: classpath:log4j2.xml
4.在类上加上lomback的注解不变。即可在方法上引入日志。
5.启动项目,即可发现日志已经生效。打印出彩色日志在控制台。满足了要求。
但是,等部署到测试环境,要去看日志文件时,发现,这个日志配置虽然满足了生产环境的要求,却不满足测试环境输出日志文件的需求。还是要加上配置文件,给出控制台打印或者日志打印的日志输出模式。实际经过上面的修改后。logback的日志框架引入什么都没有了只剩下一个@Slf4j这样一个类上面的注解。只要注解在,加上log.info语句,就能打印出日志。我们需要引入logback的日志配置。来实现可控制台,可日志文件的形式。所以完整的配置还要有下面两步:
a. logback引入配置文件:logback-spring到resource目录。日志文件分为error和info两个目录。分别存储错误日志和正常打印日志
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>LOGBACK</contextName>
<property name="LOG.INFO.PATH" value="/info/logs"/>
<property name="LOG.ERROR.PATH" value="/error/logs"/>
<Property name="PROJECT_NAME" value="user-center"/>
<property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n"></property>
<property name="MAX_HISTORY" value="15"></property>
<property name="MAX_FILE_SIZE" value="150MB"/>
<property name="TOTAL_SIZE_CAP" value="10GB"></property>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="INFO-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG.INFO.PATH}/${PROJECT_NAME}/${PROJECT_NAME}.info.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG.INFO.PATH}/${PROJECT_NAME}/${PROJECT_NAME}.info.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>${MAX_HISTORY}</maxHistory>
<totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="ERROR-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG.ERROR.PATH}/${PROJECT_NAME}/${PROJECT_NAME}.error.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG.ERROR.PATH}/${PROJECT_NAME}/${PROJECT_NAME}.error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>${MAX_HISTORY}</maxHistory>
<totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--指定特定路径下的日志输出为debug模式。这里是指定持久层操作打印出sql-->
<logger name="com.zhanglf.catalog.dao" level="debug"></logger>
<!--指定不同环境dev、test、prod下的日志输出方式-->
<springProfile name="dev">
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="INFO-APPENDER"/>
<appender-ref ref="ERROR-APPENDER"/>
</root>
</springProfile>
<springProfile name="test">
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="INFO-APPENDER"/>
<appender-ref ref="ERROR-APPENDER"/>
</root>
</springProfile>
<!--指定prod下的日志输出方式为控制台输出-->
<springProfile name="prod">
<root level="info">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
</configuration>
b.在yml文件中引入日志配置
logging:
config: classpath:logback-spring.xml
最后
以上就是勤劳小蝴蝶为你收集整理的springboot整合日志(二)----------logback( log4j2调整为logback )的全部内容,希望文章能够帮你解决springboot整合日志(二)----------logback( log4j2调整为logback )所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复