程序员

log4j2配置篇

2017-09-18  本文已影响0人  high_m

log4j的配置可以通过以下四种方式完成:

  • 通过XML, JSON, YAML, 或者 properties格式的配置文件。
  • 通过ConfigurationFactory 和 Configuration的实现。
  • 通过Configuration 暴露的接口为默认配置增加实现组件。
  • 通过内部的Logger类方法调用。
    本文只对第一种实现方式做粗略阐述。

自动发现配置

log4j启动时会自动寻找到所有的ConfigurationFactory 插件并进行优先级排序,log4j包括四种ConfigurationFactory 实现,针对JSON、YAML、properties、XML各一个。优先级排序如下:

log4j.configurationFile
log4j2-test.properties
log4j2-test.yaml(log4j2-test.yml)
log4j2-test.json(log4j2-test.jsn)
log4j2-test.xml
log4j2.properties
log4j2.yaml(log4j2.yml)
log4j2.json(log4j2.jsn)
log4j2.xml
DefaultConfiguration 

如果你没有写配置文件,会如何?
log4j会使用默认配置,其相关类是DefaultConfiguration.java,与其等价的xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

日志输出级别是error,输出目的地是Console。这意味着只有error及以上水平的日志才会被输出到控制台上。


配置文件解析

就依然上面这个配置文件进行阐述,主要包括AppendersLoggers两个部分,Appenders主要说明日志的输出目的地,而Loggers主要说明都有哪些日志记录器。Loggers中一个根日志记录器Root,其他用户自定义的日志记录器(Logger 标签)都会继承它,日志记录器中AppenderRef标签会说明此日志记录器输出的日志会流向哪里(目的地在Appenders标签中定义)。

相关文章

上一篇下一篇

猜你喜欢

热点阅读