非常简单的使用控制台和文件appender的log4j2 XMLconfiguration文件

我想用一个控制台和一个文件appender使用log4j2一个非常简单的XMLconfiguration文件。

(阿帕奇网站正在消耗我很多信息。)

<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> <File name="MyFile" fileName="all.log" immediateFlush="false" append="false"> <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </File> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="Console" /> <AppenderRef ref="MyFile"/> </Root> </Loggers> </Configuration> 

笔记:

  • 将以下内容放入configuration文件中。
  • 命名configuration文件log4j2.xml
  • 把log4j2.xml放在类path的文件夹(即你的源文件夹“src”)
  • 使用Logger logger = LogManager.getLogger(); 初始化你的logging器
  • 我确实设置了immediateFlush =“false”,因为SSD寿命更长 。 如果您在日志文件中立即需要日志,请删除参数或将其设置为true

log4j2有一个非常灵活的configuration系统(恕我直言,比帮助更分心),你甚至可以使用JSON。 请参阅https://logging.apache.org/log4j/2.x/manual/configuration.html以供参考。;

就个人而言,我最近刚开始使用log4j2,但是我趋向于“严格的XML”configuration(即使用属性而不是元素名称),这可以通过模式validation。

这里是我使用自动configuration和严格模式的简单示例,使用“属性”来设置文件名:

 <?xml version="1.0" encoding="UTF-8"?> <Configuration monitorinterval="30" status="info" strict="true"> <Properties> <Property name="filename">log/CelsiusConverter.log</Property> </Properties> <Appenders> <Appender type="Console" name="Console"> <Layout type="PatternLayout" pattern="%d %p [%t] %m%n" /> </Appender> <Appender type="Console" name="FLOW"> <Layout type="PatternLayout" pattern="%C{1}.%M %m %ex%n" /> </Appender> <Appender type="File" name="File" fileName="${filename}"> <Layout type="PatternLayout" pattern="%d %p %C{1.} [%t] %m%n" /> </Appender> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="File" /> <AppenderRef ref="Console" /> <!-- Use FLOW to trace down exact method sending the msg --> <!-- <AppenderRef ref="FLOW" /> --> </Root> </Loggers> </Configuration>