log4j2 使用笔记
来源:互联网 发布:linux connect 编辑:程序博客网 时间:2024/05/17 06:26
一、安装/引入
在pom.xml中加入依赖
<!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.10.0</version></dependency><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.10.0</version></dependency>
二、配置文件
Log4j 2.x配置文件只能采用.xml, .json或者 .jsn,不能使用1.x中的properties文件。
程序从classpath下寻找配置文件的优先级如下:
log4j-test.json 或者log4j-test.jsn文件 > log4j2-test.xml > log4j.json 或者log4j.jsn文件 > log4j2.xml
配置文件的结构
Configuration --Appenders --Child(输出类型) --Layout(输出的模板) --Filters(日志过滤器) --Loggers --Logger(日志输出对象) --Appender-ref(引用上面定义的输出类型)
配置文件模板
<?xml version="1.0" encoding="UTF-8"?><!-- status : 这个用于设置log4j2自身内部的信息输出,可以不设置或设置为OFF;当设置成trace时,会看到log4j2内部各种详细输出。 monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数。此处表示每隔600秒重读一次配置文件--><configuration status="OFF" monitorInterval="600"> <Properties> <!-- 设置属性,相当于全局变量 --> <Property name="LOG_HOME">logs</Property> <Property name="DEBUG_FILE_NAME">debug</Property> <Property name="ERROR_FILE_NAME">error</Property> <Property name="ROLL_FILE_NAME">rollingLog</Property> </Properties> <appenders> <!-- target是指定输出的目标,默认为System.out,也可以设置成System.err --> <Console name="STDOUT" target="SYSTEM_OUT"> <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/> <!-- 输出内容的样式、模板 --> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level [%t] %C %M %L - %msg%xEx%n" /> </Console> <File name="DEBUG" fileName="${LOG_HOME}/${DEBUG_FILE_NAME}.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" /> </File> <File name="ERROR" fileName="${LOG_HOME}/${ERROR_FILE_NAME}.log" append="true"> <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" /> </File> <!-- fileName : 指定当前日志文件的位置和文件名称 filePattern : 指定当发生Rolling时,文件的转移和重命名规则 SizeBasedTriggeringPolicy : 指定当文件体积大于size指定的值时,触发Rolling TimeBasedTriggeringPolicy : 这个配置需要和filePattern结合使用 DefaultRolloverStrategy : 指定最多保存的文件个数 注意filePattern中配置的文件重命名规则是${ROLL_FILE_NAME}_%d{yyyy-MM-dd}_%i,最小的时间粒度是dd,即天, TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1天生成一个新文件 --> <RollingFile name="RollingFile" fileName="${LOG_HOME}/${ROLL_FILE_NAME}.log" filePattern="${LOG_HOME}/${ROLL_FILE_NAME}_%d{yyyy-MM-dd}_%i.log"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" /> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="false" /> <SizeBasedTriggeringPolicy size="1 MB" /> </Policies> <DefaultRolloverStrategy max="100"/> </RollingFile> <!--配置异步写日志--> <Async name="Async"> <AppenderRef ref="ALL"/> </Async> <!--输出到MongoDB中--> <NoSql name="databaseAppender"> <MongoDb databaseName="test" collectionName="errorlog" server="localhost" port="27017" /> </NoSql> </appenders> <loggers> <logger name="STDOUT"> <appender-ref ref="STDOUT"/> </logger> <logger name="ROLLLOG" additivity="false"> <appender-ref ref="RollingFile"/> </logger> <root level="trace"> <appender-ref ref="RollingFile"/> <appender-ref ref="ERROR" /> </root> </loggers></configuration>
输出类型
1,Console Appender
把信息输出结果控制台。
2,File Appender
输出结果到指定文件。
3,Rolling File Appender
自动追加日志信息到文件中,直至文件达到预定的大小,然后自动重新生成另外一个文件来记录之后的日志。
日志级别
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
输出信息为>=当前设置级别的信息,因此TRACE的信息是最大的。
过滤器
log4j2有多种过滤器,最简单的是Threshold过滤器,其有三个配置项
log4j2 logger 加载规则
- logger name 相同时,以 level 级别高的为准
- logger name=”org” 会被 name=”org.xxx” 继承,”root”默认被所有logger继承。
- logger 中的 additivity=”true” 表示子日志所获得的日志也会在父日志中出现,即使父日志的 level 远高于子日志的 level
- 当子日志 level 大于父日志时,父日志只能接收到子日志过滤后的日志
代码中使用
private static Logger logger = LogManager.getLogger("STDOUT");
三、模板样式
可用的转换字符详解:
http://logging.apache.org/log4j/2.x/manual/layouts.html
常用的有:
阅读全文
0 0
- log4j2使用笔记
- log4j2 使用笔记
- log4j2使用
- log4j2使用
- log4j2使用
- log4j2使用
- 记录我的学习笔记-Java-log4j2的使用
- [log4j2] 使用教程详解(怎么使用log4j2)
- log4j2 使用详解
- Log4j2使用总结
- log4j2 使用详解
- log4j2 使用详解
- log4j2 简单使用方式
- log4j2 使用详解
- log4j2 使用详解
- log4j2配置及使用
- log4j2 使用详解
- log4j2使用总结
- Python 深入浅出
- lintcode&九章算法——lintcode NO.5 第k大元素 ? 带解决
- [LeetCode] Convert Sorted Array to Binary Search Tree
- Raft协议中文翻译(3)
- [LUOGU1012] 拼数
- log4j2 使用笔记
- project euler 8 Largest product in a series
- RSA原理浅析
- 05_张孝祥_Java多线程_线程范围内共享变量的概念与作用
- JIT和AOT编译技术
- C#小知识
- GVRP的配置
- tf.one_hot()进行独热编码
- [LUOGU1603] 斯诺登的密码