log4j2 xml配置调用
来源:互联网 发布:深圳数据恢复哪家强 编辑:程序博客网 时间:2024/06/06 18:58
log4j2 的 xml 配置与程序的调用以解决 Java 程序的日志和跟踪
大型应用程序都需要日志或跟踪,apache log4j 为此提供了一个非常简单的解决方案,仅仅通过 xml 或者 json 的配置,就可以对程序进行分级日志跟踪,并且可以选择日志的输出方式,比如控制台或文件,或者同时输出。
log4j 支持多种格式的配置文件,log4j2.xml 是 log4j 的 xml 配置格式,这里暂时只介绍 xml 格式,以下是配置文件节点属性的描述。
log4j2.xml,文件放到代码的根目录,最基本默认形式的配置,调整 status="info" 的参数可以显示不同的日志级别,可选参数为 "trace", "debug", "info", "warn", "error" and "fatal"。
- <?xml version="1.0" encoding="UTF-8"?>
- <Configuration status="info">
- <Appenders> <!--指定输出日志文件位置-->
- <Console name="Console" target="SYSTEM_OUT">
- <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
- </Console>
- </Appenders>
- <Loggers>
- <Root level="info">
- <AppenderRef ref="Console" />
- </Root>
- </Loggers>
- </Configuration>
或者针对类有不同级别的调试级别以及继承关系
- <Loggers>
- <Logger name="test1.MyObject2" level="info" additivity="false">
- <AppenderRef ref="Console" />
- </Logger>
- <Logger name="test1.RunMyObject2" level="debug" additivity="false">
- <AppenderRef ref="Console" />
- </Logger>
- <Root level="info">
- <AppenderRef ref="" />
- </Root>
- </Loggers>
或者僅僅在日志文件中輸出日志
- <?xml version="1.0" encoding="UTF-8"?>
- <Configuration status="error">
- <Appenders>
- <Console name="Console" target="SYSTEM_OUT">
- <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" />
- <!-- Flow tracing is most useful with a pattern that shows location. Below pattern outputs class, line number and method name. -->
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
- </Console>
- <File name="log" fileName="target/test.log" append="false">
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
- </File>
- </Appenders>
- <Loggers>
- <Root level="trace">
- <AppenderRef ref="log" />
- </Root>
- </Loggers>
- </Configuration>
更加实用的一个配置,每天一个日志文件,每天更新,超过设定字节数后自动更名
- <?xml version="1.0" encoding="UTF-8"?>
- <Configuration status="debug">
- <Appenders>
- <!-- 輸出到監視器 -->
- <Console name="Console" target="SYSTEM_OUT">
- <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
- </Console>
- <!-- 按天备份 -->
- <RollingFile name="File" fileName="logs/new.log" filePattern="logs/log_%d{yyyy-MM-dd}_%i.log">
- <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
- <Policies>
- <!-- 更新时间 -->
- <TimeBasedTriggeringPolicy modulate="true" interval="24" />
- <SizeBasedTriggeringPolicy size="128KB" />
- </Policies>
- <!-- 最多8个日志 -->
- <DefaultRolloverStrategy max="8" />
- </RollingFile>
- </Appenders>
- <Loggers>
- <Logger name="test1.RunMyObject2" level="debug">
- <!-- 输出到文件 -->
- <AppenderRef ref="File" />
- </Logger>
- <Logger name="test1.MyObject2" level="debug">
- <!-- 输出至显示器 -->
- <AppenderRef ref="Console" />
- </Logger>
- <Root level="trace">
- <!-- 输出至显示器 -->
- <AppenderRef ref="Console" />
- </Root>
- </Loggers>
- </Configuration>
测试代码 MyObject2
- package test1;
- import org.apache.logging.log4j.LogManager;
- import org.apache.logging.log4j.Logger;
- public class MyObject2
- {
- private static final Logger logger = LogManager.getLogger(MyObject2.class);
- public MyObject2()
- {
- logger.entry();
- logger.info("创建 MyObject2 前, info");
- logger.debug("创建 MyObject2 前, debug");
- int a = 1;
- int b = 2;
- int c = 0;
- try
- {
- b = 0;
- logger.error("發生赋值錯誤,乘數不能爲零");
- c = a / b;
- }
- catch (Exception x)
- {
- logger.fatal("發生除零异常");
- }
- logger.info("释放 MyObject2 前, info");
- logger.exit(false);
- logger.debug("释放 MyObject2 前, debug");
- }
- }
- package test1;
- import org.apache.logging.log4j.LogManager;
- import org.apache.logging.log4j.Logger;
- import log4jtest01.Bar;
- import log4jtest01.Log4jApp;
- public class RunMyObject2
- {
- private static final Logger logger = LogManager.getLogger(RunMyObject2.class);
- public static void main(final String... args)
- {
- logger.trace("Entering application.");
- logger.info("創建 MyObject2");
- MyObject2 myObject2 = new MyObject2();
- logger.warn("釋放 MyObject2");
- logger.trace("Exiting application.");
- }
- }
运行时输出的信息,调试级别为 <Root level="info">
- 13:35:13.584 [main] INFO test1.RunMyObject2 - 創建 MyObject2
- 13:35:13.585 [main] INFO test1.MyObject2 - 创建 MyObject2 前, info
- 13:35:13.585 [main] ERROR test1.MyObject2 - 發生赋值錯誤,乘數不能爲零
- 13:35:13.585 [main] FATAL test1.MyObject2 - 發生除零异常
- 13:35:13.585 [main] INFO test1.MyObject2 - 释放 MyObject2 前, info
- 13:35:13.585 [main] WARN test1.RunMyObject2 - 釋放 MyObject2
当调试基本修改为 debug 时,<Root level="debug"> 将得到更详细的信息
- 13:37:09.067 [main] INFO test1.RunMyObject2 - 創建 MyObject2
- 13:37:09.068 [main] INFO test1.MyObject2 - 创建 MyObject2 前, info
- 13:37:09.068 [main] DEBUG test1.MyObject2 - 创建 MyObject2 前, debug
- 13:37:09.068 [main] ERROR test1.MyObject2 - 發生赋值錯誤,乘數不能爲零
- 13:37:09.068 [main] FATAL test1.MyObject2 - 發生除零异常
- 13:37:09.068 [main] INFO test1.MyObject2 - 释放 MyObject2 前, info
- 13:37:09.068 [main] DEBUG test1.MyObject2 - 释放 MyObject2 前, debug
- 13:37:09.068 [main] WARN test1.RunMyObject2 - 釋放 MyObject2
Q群讨论:236201801
本文地址:http://blog.csdn.NET/joyous/article/details/50771752
参考资料来自:https://logging.apache.org/log4j/2.x/manual/index.html
阅读全文
0 0
- log4j2 xml配置调用
- Log4j2.xml配置详解
- log4j2 xml配置详解
- log4j2.xml配置详解
- Log4j2.xml配置
- log4j2.xml 配置
- log4j2配置文件log4j2.xml配置详解
- log4j2 的 xml 配置与程序的调用以解决 java 程序的日志和跟踪
- log4j2配置文件log4j2.xml
- log4j2配置文件log4j2.xml
- log4j2配置文件log4j2.xml
- Log4j2的XML和properties配置方式
- log4j2.xml
- log4j2.xml
- log4j2.xml
- log4j2配置
- log4j2 配置
- Log4j2配置
- LeetCode 98. Validate Binary Search Tree (Python)
- Spring学习(三)-IOC概念
- 四、c++中的算法--变动性算法---排列
- MTK Camera驱动框架学习
- Counting Divisors HDU
- log4j2 xml配置调用
- springmvc全局异常处理器的配置
- 2186. 猴子拆房
- 解析URL
- MySQL 性能优化
- erase()的使用
- Oracle PL/SQL开发基础(第三十六弹:异常处理的一些经验)
- 12.接口:implements
- junit5相关依赖的写法