文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于log4j2.properties踩坑与填坑的示例分析

2023-06-22 05:44

关注

这篇文章主要介绍基于log4j2.properties踩坑与填坑的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

log4j2.properties踩坑与填坑

日志配置

门面模式:slf4j

日志库:log4j2

引入依赖:compile('org.springframework.boot:spring-boot-starter-log4j2:2.0.4.RELEASE')

采坑

启动Application时,出现Multiple bindings were found on the class path的问题

configurations {    compile.exclude module: 'spring-boot-starter-logging'}

启动后,没有按照配置好的格式输出

#指定log4j2配置文件的位置与名称logging:  config: classpath:log4j2.properties

格式化日志输出参数

可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:

记录一份自己的配置文件

实现控制台打印,以及基于时间和基于文件大小的本地保存策略。

name=PropertiesConfig# 定义变量。指定日志文件的位置和文件名称,以便记录多份日志时,直接引用property.fileName=qiyinzoneproperty.fileDir=./logsproperty.filePath=${fileDir}/${fileName}.logappenders=console, rolling # rootLogger, 根记录器,所有记录器的父辈# 指定根日志的级别rootLogger.level=info# 指定输出的appender引用rootLogger.appenderRef.stdout.ref=StdoutrootLogger.appenderRef.rolling.ref=InfoRollingFile # console# 指定输出源的类型与名称appender.console.type=Consoleappender.console.name=Stdoutappender.console.layout.type=PatternLayout# 输出模板appender.console.layout.pattern=%highlight{%d{yyyy-MM-dd HH:mm:ss.SSS} [%5p] [%t] [%l] - %m%n}{FATAL=white, ERROR=red, WARN=blue, INFO=Green, DEBUG=Yellow, TRACE=blue} # rolling fileappender.rolling.type=RollingFileappender.rolling.name=InfoRollingFileappender.rolling.fileName=${filePath}# 指定当发生Rolling时,文件的转移和重命名规则appender.rolling.filePattern=${fileDir}/${fileName}_%d{yyyy-MM-dd}_%i.logappender.rolling.layout.type=PatternLayoutappender.rolling.layout.pattern=%highlight{%d{yyyy-MM-dd HH:mm:ss.SSS} [%5p] [%t] [%l] - %m%n}{FATAL=white, ERROR=red, WARN=blue, INFO=Green, DEBUG=Yellow, TRACE=blue}# 指定记录文件的封存策略,该策略主要是完成周期性的日志文件封存工作appender.rolling.policies.type=Policies# 基于时间的触发策略appender.rolling.policies.time.type=TimeBasedTriggeringPolicy# 当前记录周期为每1h生成一个文件appender.rolling.policies.time.interval=1appender.rolling.policies.time.modulate=true# 基于日志文件体积的触发策略appender.rolling.policies.size.type=SizeBasedTriggeringPolicy# 当日志文件体积大于size指定的值时,触发Rollingappender.rolling.policies.size.size=20M# 文件封存的覆盖策略appender.rolling.strategy.type=DefaultRolloverStrategy# 生成分割(封存)文件的个数appender.rolling.strategy.max=100

打印效果

打印时,对不同level的日志定义了不同的字体颜色,方便定位。

%highlight{%d{yyyy-MM-dd HH:mm:ss.SSS} [%5p] [%t] [%l] - %m%n}{FATAL=white, ERROR=red, WARN=blue, INFO=Green, DEBUG=Yellow, TRACE=blue}

Log4j2 properties配置文件

原工作组比较清闲,被临时借调到新的工作组。组长给了个任务是把Log4j的XML配置文件改成properties,原因是XML格式的看着不舒服。哈,以上不算吐槽,只是交待一下,为什么我要这么费劲的使用properties做配置文件。

Log4j2 一开始抛弃了properties配置文件格式,到2.4版本时,又开始支持properties配置文件格式。到2.6版本又有新的要求。我用的是写本文时的最近版本2.8

status = errorproperty.LOG_HOME=/output/logsproperty.BACKUP_HOME=backupproperty.SERVER_NAME=buddie-Serviceproperty.EVERY_FILE_SIZE=10Mproperty.OUTPUT_LOG_LEVEL=INFOproperty.FILE_MAX=10appender.console.type = Consoleappender.console.name = STDOUTappender.console.layout.type = PatternLayoutappender.console.layout.pattern = %m%nappender.rolling.type=RollingFileappender.rolling.name=RollingFileAllappender.rolling.filter.threshold.level = traceappender.rolling.filter.threshold.type = ThresholdFilterappender.rolling.fileName=${LOG_HOME}/dev_${SERVER_NAME}_all.logappender.rolling.filePattern=${LOG_HOME}/dev_${BACKUP_HOME}/dev_${SERVER_NAME}_all.%d{yyyy-MM-dd-HH}.logappender.rolling.layout.type=PatternLayoutappender.rolling.layout.pattern=%d %p %C{1.} [%t] %m%nappender.rolling.policies.type=Policiesappender.rolling.policies.time.type=TimeBasedTriggeringPolicyappender.rolling.policies.time.interval=2appender.rolling.policies.time.modulate=trueappender.rolling.policies.size.type=SizeBasedTriggeringPolicyappender.rolling.policies.size.size=${EVERY_FILE_SIZE}appender.rolling.strategy.type=DefaultRolloverStrategyappender.error.type=RollingFileappender.error.name=RollingFileErrorappender.error.filter.threshold.level = errorappender.error.filter.threshold.type = ThresholdFilterappender.error.fileName=${LOG_HOME}/dev_${SERVER_NAME}_error.logappender.error.filePattern=${LOG_HOME}/dev_${BACKUP_HOME}/dev_${SERVER_NAME}_error.%d{yyyy-MM-dd-HH}.logappender.error.layout.type=PatternLayoutappender.error.layout.pattern=%d %p %C{1.} [%t] %m%nappender.error.policies.type=Policiesappender.error.policies.time.type=TimeBasedTriggeringPolicyappender.error.policies.time.interval=2appender.error.policies.time.modulate=trueappender.error.policies.size.type=SizeBasedTriggeringPolicyappender.error.policies.size.size=${EVERY_FILE_SIZE}appender.error.strategy.type=DefaultRolloverStrategyappender.charge.type=RollingFileappender.charge.name=RollingFileChargeappender.charge.filter.threshold.level = traceappender.charge.filter.threshold.type = ThresholdFilterappender.charge.fileName=${LOG_HOME}/dev_${SERVER_NAME}_charge.logappender.charge.filePattern=${LOG_HOME}/dev_${BACKUP_HOME}/dev_${SERVER_NAME}_charge.%d{yyyy-MM-dd-HH}.logappender.charge.layout.type=PatternLayoutappender.charge.layout.pattern=%d %p %C{1.} [%t] %m%nappender.charge.policies.type=Policiesappender.charge.policies.time.type=TimeBasedTriggeringPolicyappender.charge.policies.time.interval=2appender.charge.policies.time.modulate=trueappender.charge.policies.size.type=SizeBasedTriggeringPolicyappender.charge.policies.size.size=${EVERY_FILE_SIZE}appender.charge.strategy.type=DefaultRolloverStrategylogger.activity.name = buddie.activitylogger.activity.level = debuglogger.activity.additivity = falselogger.activity.appenderRef.all.ref = RollingFileAlllogger.activity.appenderRef.error.ref = RollingFileErrorlogger.activity.appenderRef.stdout.ref = STDOUTlogger.login.name = buddie.loginlogger.login.level = debuglogger.login.additivity = falselogger.login.appenderRef.all.ref = RollingFileAlllogger.login.appenderRef.error.ref = RollingFileErrorlogger.login.appenderRef.stdout.ref = STDOUTlogger.charge.name = buddie.chargelogger.charge.level = tracelogger.charge.additivity = falselogger.charge.appenderRef.all.ref = RollingFileAlllogger.charge.appenderRef.error.ref = RollingFileErrorlogger.charge.appenderRef.charge.ref = RollingFileChargelogger.charge.appenderRef.stdout.ref = STDOUTrootLogger.level = inforootLogger.appenderRef.stdout.ref = STDOUTrootLogger.appenderRef.all.ref = RollingFileAllrootLogger.appenderRef.error.ref = RollingFileError

以上是“基于log4j2.properties踩坑与填坑的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯