博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习springBoot(5)log4j2日志框架整合
阅读量:6871 次
发布时间:2019-06-26

本文共 4943 字,大约阅读时间需要 16 分钟。

深入了解一下log4j2的日志配置, 方便后续的学习

1、先贴个比较全的配置,在慢慢研究(o()q 从别人那贴的。。。)

复制代码

2、关于配置文件的名称以及在项目中的存放位置

 log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn".

    系统选择配置文件的优先级(从先到后)如下:

      (1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的文件.

      (2).classpath下的名为log4j2-test.xml的文件.

      (3).classpath下名为log4j2.json 或者log4j2.jsn的文件.

      (4).classpath下名为log4j2.xml的文件.        3、配置文件节点解析    

   

(1).根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger).    status用来指定log4j本身的打印日志的级别.    monitorinterval用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.(2).Appenders节点,常见的有三种子节点:Console、RollingFile、File.    Console节点用来定义输出到控制台的Appender.    name:指定Appender的名字.    target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.    PatternLayout:输出格式,不设置默认为:%m%n.    File节点用来定义输出到指定位置的文件的Appender.    name:指定Appender的名字.    fileName:指定输出日志的目的文件带全路径的文件名.    PatternLayout:输出格式,不设置默认为:%m%n.    RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.    name:指定Appender的名字.    fileName:指定输出日志的目的文件带全路径的文件名.    PatternLayout:输出格式,不设置默认为:%m%n.    filePattern:指定新建日志文件的名称格式.    Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.    TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am.    SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.    DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。(3).Loggers节点,常见的有两种:Root和Logger.    Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出    level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.    AppenderRef:Root的子节点,用来指定该日志输出到哪个Appender.    Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。    level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.    name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.    AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root.如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。(4).关于日志level.    共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.    All:最低等级的,用于打开所有日志记录.    Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出.    Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.    Info:消息在粗粒度级别上突出强调应用程序的运行过程.    Warn:输出警告及warn以下级别的日志.    Error:输出错误信息日志.    Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.    OFF:最高等级的,用于关闭所有日志记录.    程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。复制代码

“${sys:user.home}” :获取用户的HOME目录

在贴一个yml格式的,比上面的配置要简单些,不过应该够用了,自己也使用了这个

Configuration:  status: warn  Properties: # 定义全局变量    Property: # 缺省配置(用于开发环境)。其他环境需要在VM参数中指定,如下:      #测试:-Dlog.level.console=warn -Dlog.level.xjj=trace      #生产:-Dlog.level.console=warn -Dlog.level.xjj=info      - name: log.level.console        value: debug      - name: log.level.xjj        value: info      - name: log.path        value: D:/log      - name: project.name        value: springboot1  Appenders:    Console:  #输出到控制台      name: CONSOLE      target: SYSTEM_OUT      ThresholdFilter:        level: ${sys:log.level.console} # “sys:”表示:如果VM参数中没指定这个变量值,则使用本文件中定义的缺省全局变量值        onMatch: ACCEPT        onMismatch: DENY      PatternLayout:        pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"    RollingFile: # 输出到文件,超过100MB归档      - name: ROLLING_FILE        ignoreExceptions: false        fileName: ${log.path}/${project.name}.log        filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"        PatternLayout:          pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"        Policies:          SizeBasedTriggeringPolicy:            size: "100 MB"        DefaultRolloverStrategy:          max: 1000  Loggers:    Root:      level: info      AppenderRef:        - ref: CONSOLE        - ref: ROLLING_FILE    Logger: # 为org.springframework包配置特殊的Log级别,方便调试      - name: org.springframework        additivity: false        level: ${sys:log.level.xjj}        AppenderRef:          - ref: CONSOLE          - ref: ROLLING_FILE复制代码

转载地址:http://fecfl.baihongyu.com/

你可能感兴趣的文章
MySQL 架构组成—存储引擎
查看>>
基于数值分析思想对多项式求值的原理和应用进行探究
查看>>
vue-devtools vue开发调试神器
查看>>
PHP扩展模块的安装
查看>>
BGP基础操作
查看>>
selenium系列->Actions命令实例整理->goBack()
查看>>
CentOS 7上构建squid传统代理,透明代理(squid3.4.6)
查看>>
SimpleXml项目
查看>>
php下使用PDO创建sqlite3数据库
查看>>
Istio技术与实践6:Istio如何为服务提供安全防护能力
查看>>
大型架构及配置技术Docker
查看>>
ISTP的重要作用
查看>>
GitHub---(使用SSH方式)
查看>>
大规模生产计划技术管理核心理念
查看>>
阿里云HBase推出全新X-Pack服务 定义HBase云服务新标准
查看>>
驼峰设计 PPT美化
查看>>
hcl DHCP与snooping的实践操作 中有个问题
查看>>
Python Python 正则 取中括号值
查看>>
springMVC-接收数据-参数绑定
查看>>
OOM问题定位方法
查看>>