Log4j XML基础教程文档
收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體
Log4j XML
两个最重要的配置选项是使用 log4j.xml 配置或使用 log4j.properties 配置.在本节中,我们将看到如何使用 XML 配置 log4j。我们也可以使用属性文件,但现在一天的 xml 比属性文件更受欢迎。
这是包含log4j使用的所有运行时配置的主要配置文件。此文件将包含 log4j 附加程序信息、日志级别信息和文件附加程序的输出文件名。
在"Log4j 示例"部分,我们解释了如何使用属性文件配置 log4j。在这里,除了我们使用 XML 配置文件之外,一切都保持不变。
以下代码为对应的log4j.xml文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L-%m%n" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="console" /> </root> </log4j:configuration>
使用xml文件配置log4j,我们使用DOMConfigurator.configure()方法。
import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; public class HelloWorld { static Logger logger = Logger.getLogger(HelloWorld.class); public static void main(String[] args) { DOMConfigurator.configure("log4j.xml"); logger.debug("Sample debug message"); logger.info("Sample info message"); logger.warn("Sample warn message"); logger.error("Sample error message"); logger.fatal("Sample fatal message"); } }
输出:
log4j: reset attribute= "false". log4j: Threshold ="null". log4j: Level value for root is [DEBUG]. log4j: root level set to DEBUG log4j: class name: [org.apache.log4j.ConsoleAppender] log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L-%m%n]. log4j: Adding appender named [console] to category [root]. 2019-09-05 18:07:45 DEBUG HelloWorld:10-Sample debug message 2019-09-05 18:07:45 INFO HelloWorld:11-Sample info message 2019-09-05 18:07:45 WARN HelloWorld:12-Sample warn message 2019-09-05 18:07:45 ERROR HelloWorld:13-Sample error message 2019-09-05 18:07:45 FATAL HelloWorld:14-Sample fatal message
以上示例用于控制台输出。如果你想得到文件的输出,那么你只需要改变 log4j.xml 文件。
输出到文件:
下面的log4j.xml 会将日志重定向到一个文件。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="file" class="org.apache.log4j.RollingFileAppender"> <param name="append" value="false" /> <param name="maxFileSize" value="10KB" /> <param name="maxBackupIndex" value="5" /> <param name="file" value="${catalina.home}/logs/myStruts1App.log" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L-%m%n" /> </layout> </appender> <root> <level value="ERROR" /> <appender-ref ref="file" /> </root> </log4j:configuration>
输出到控制台和文件:
即使您可以在控制台和文件上获得输出。下面的 log4j.xml 配置文件将输出重定向到控制台和文件。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L-%m%n" /> </layout> </appender> <appender name="file" class="org.apache.log4j.RollingFileAppender"> <param name="append" value="false" /> <param name="maxFileSize" value="10MB" /> <param name="maxBackupIndex" value="10" /> <param name="file" value="${catalina.home}/logs/myStruts1App.log" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L-%m%n" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="console" /> <appender-ref ref="file" /> </root> </log4j:configuration>
输出:
log4j: reset attribute= "false". log4j: Threshold ="null". log4j: Level value for root is [DEBUG]. log4j: root level set to DEBUG log4j: class name: [org.apache.log4j.ConsoleAppender] log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L-%m%n]. log4j: Adding appender named [console] to category [root]. log4j: class name: [org.apache.log4j.RollingFileAppender] log4j: Setting property [append] to [false]. log4j: Setting property [maxFileSize] to [10MB]. log4j: Setting property [maxBackupIndex] to [10]. log4j: Setting property [file] to [/logs/myStruts1App.log]. log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L-%m%n]. log4j: setFile called: /logs/myStruts1App.log, false log4j: setFile ended log4j: Adding appender named [file] to category [root]. 2019-09-05 18:26:30 DEBUG HelloWorld:10-Sample debug message 2019-09-05 18:26:30 INFO HelloWorld:11-Sample info message 2019-09-05 18:26:30 WARN HelloWorld:12-Sample warn message 2019-09-05 18:26:30 ERROR HelloWorld:13-Sample error message 2019-09-05 18:26:30 FATAL HelloWorld:14-Sample fatal message