springboot使用log4j管理日志,spring boot log4j

  springboot使用log4j管理日志,spring boot log4j

  

目录

1、依赖添加1.1、添加依赖1.2、剔除依赖2、配置日志2.1、日志打印记录2.2、指定配置文件补充:log4j调优和注意事项总结

 

  

1、依赖添加

 

  

1.1、添加依赖

需要引入log4j的依赖支持,推荐自己确定使用的版本。

 

  依赖关系groupId组织。阿帕奇。伐木。log4j/groupId artifactId log4j至slf4j/artifactId版本2 . 11 . 2/版本/依赖性

  

1.2、剔除依赖

跳靴默认自己内部添加了对日志的支持,需要将其全部剔除掉,不然会影响log4j的依赖使用。

 

  依赖关系groupIdorg.springframework.boot/groupId工件id spring-boot-starter-log/工件id排除排除groupId */groupId工件id */工件id/排除/排除/依赖关系

  

2、配置日志

 

  

2.1、日志打印记录

根据自己的需求进行相关的配置,这里需要注意的是使用可扩展标记语言文件进行配置,使用性能有坑没爬起来,文件名自定义,没有啥要求,都会在配置文件中进行指定的。

 

  ?可扩展标记语言版本=1.0 编码=UTF八号?配置扫描= true 扫描周期= 10秒 context name beordie/context name property name= path value= e : file Java learn blog src main resources logs /转换规则转换word= clr converter class= org。spring框架。靴子。伐木。伐木。返回日志。返回日志。颜色转换器/转换规则转换器word= wEx converter class= org。spring框架。靴子。日志备份。空白throwableproxyconverterss }){幽幽} % clr($ { log _ level _ pattern :-% 5p })% clr($ { PID :-}){ magenta } % clr(-){幽幽} %clr([.15t]){faint} % clr(%-40.40记录器{ 39 }){ cyan } % clr(:){幽幽} % m % n $ { log _ exception _ conversion _ word 3:-% wex } } /appender name= console class= ch。服务质量.

  c.filter.ThresholdFilter"> <level>info</level> </filter> <encoder> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${path}/debug.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>15</maxHistory> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>debug</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log}/info.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>15</maxHistory> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log}/warn.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>15</maxHistory> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>warn</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log}/error.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>15</maxHistory> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <springProfile name="dev"> <logger name="com.beordie" level="debug"/> </springProfile> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="DEBUG_FILE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="WARN_FILE" /> <appender-ref ref="ERROR_FILE" /> </root></configuration>

 

  

2.2、指定配置文件

还需要在 spring boot 的项目配置文件中进行配置的指定。

 

  

logging: config: classpath:log4j.xml

到这里完成对日志的整体配置,启动项目通过下面语句拿到日志对象即可进行日志的打印输出。

 

  

private final Logger LOGGING = LoggerFactory.getLogger(ArticleController.class);

 

  

补充:log4j调优和注意事项

日志模式-同步/异步

 

  log4j2提供了AsyncAppender和AsyncLogger以及全局异步,开启方式如下:

  同步模式:默认配置即为同步模式,即没有使用任何AsyncAppender和AsyncLogger。全局异步:配置按照同步方式配,通过添加jvm启动参数即可开启全局异步,无需修改配置和应用。混合异步:使用异步Logger和同步Logger的混合配置,且不开启全局异步,即Logger配置中部分AsyncLogger,部分Logger。日志模式使用注意事项:

  如果使用异步,建议使用AsyncLogger实现而不是AsyncAppender。如果使用同步,AsyncLogger、AsyncAppender和全局异步只能使用一种,不可以同时配置AsyncAppender和AsyncLogger,或者配置了异步的情况下启用了全局异步。日志滚动和清除策略

  log4j2提供了基于文件大小的滚动策略和基于时间的滚动策略,也可以二者并用,这里给出基于大小的滚动策略配置和基于大小/时间双滚动策略配置:

  基于大小的滚动策略:按照大小滚动,启用压缩,并最多保留N个文件基于大小/时间双滚动滚动策略:按照大小和时间滚动,启用压缩,单位时间内控制最多保留日志个数并控制总的日志留存时间。

 

  

总结

到此这篇关于springboot整合log4j踩坑的文章就介绍到这了,更多相关springboot整合log4j踩坑内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: