log4j2配置
程序员文章站
2022-05-18 10:01:50
...
java工程配置log4j2
1.需要引用的jar包如下:
log4j-api-2.12.1.jar
log4j-core-2.12.1.jar
下载地址:https://logging.apache.org/log4j/2.x/download.html
2.log4j2.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数,含义是每隔300秒重新读取配置文件,是很好用的功能-->
<Configuration status="OFF" monitorInterval="300">
<!-- properties 自定义参数 供后面的RollingRandomAccessFile使用 -->
<properties>
<!-- 此目录是相对目录,需提前创建目录 -->
<property name="info_file_path">./consolelog</property>
<property name="info_file">info_file</property>
<property name="detail_file_path">./detail</property>
<property name="detail_file">detail_file</property>
<property name="config_file_path">./consolelog</property>
<property name="config_file">config_file</property>
</properties>
<Appenders>
<!-- 控制台 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<!-- RollingRandomAccessFile的属性:
fileName 指定当前日志文件的位置和文件名称
filePattern 指定当发生回滚(Rolling)时,文件的转移和重命名规则,后面要加%i,不然会被替换掉
SizeBasedTriggeringPolicy 指定当文件体积大于size指定的值时,触发Rolling
DefaultRolloverStrategy 指定最多保存的文件个数
TimeBasedTriggeringPolicy 这个配置需要和filePattern结合使用,注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i,最小的时间粒度是mm,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1分钟生成一个新文件。如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件。
-->
<RollingRandomAccessFile name="info_file"
fileName="${info_file_path}/${info_file}.log"
filePattern="${info_file_path}/${info_file}.log.%d{yyyy-MM-dd}.%i">
<!-- PatternLayout需要输出的参数配置:
%c{参数} 或 %logger{参数} ##输出日志名称
%C{参数} 或 %class{参数 ##输出类型
%d{参数}{时区te{参数}{时区} ##输出时间
%F|%file ##输出文件名
highlight{pattern}{style} ##高亮显示
%l ##输出错误的完整位置
%L ##输出错误行号
%m 或 %msg 或 %message ##输出错误信息
%M 或 %method ##输出方法名
%n ##输出换行符
%level{参数1}{参数2}{参数3} ##输出日志的级别
%t 或 %thread #创建logging事件的线程名
-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %L %m%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="50" />
</RollingRandomAccessFile>
<RollingRandomAccessFile name="detail_file"
fileName="${detail_file_path}/${detail_file}.log"
filePattern="${detail_file_path}/${detail_file}.log.%d{yyyy-MM-dd}.%i">
<!-- PatternLayout需要输出的参数配置:
%c{参数} 或 %logger{参数} ##输出日志名称
%C{参数} 或 %class{参数 ##输出类型
%d{参数}{时区te{参数}{时区} ##输出时间
%F|%file ##输出文件名
highlight{pattern}{style} ##高亮显示
%l ##输出错误的完整位置
%L ##输出错误行号
%m 或 %msg 或 %message ##输出错误信息
%M 或 %method ##输出方法名
%n ##输出换行符
%level{参数1}{参数2}{参数3} ##输出日志的级别
%t 或 %thread #创建logging事件的线程名
-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %L %m%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="50" />
</RollingRandomAccessFile>
<RollingRandomAccessFile name="config_file"
fileName="${config_file_path}/${config_file}.log"
filePattern="${config_file_path}/${config_file}.log.%d{yyyy-MM-dd}.%i">
<!-- PatternLayout需要输出的参数配置:
%c{参数} 或 %logger{参数} ##输出日志名称
%C{参数} 或 %class{参数 ##输出类型
%d{参数}{时区te{参数}{时区} ##输出时间
%F|%file ##输出文件名
highlight{pattern}{style} ##高亮显示
%l ##输出错误的完整位置
%L ##输出错误行号
%m 或 %msg 或 %message ##输出错误信息
%M 或 %method ##输出方法名
%n ##输出换行符
%level{参数1}{参数2}{参数3} ##输出日志的级别
%t 或 %thread #创建logging事件的线程名
-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %L %m%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="50" />
</RollingRandomAccessFile>
</Appenders>
<!-- 引用 -->
<Loggers>
<Logger name="info_file" level="info" additivity="false">
<AppenderRef ref="info_file" />
</Logger>
<Logger name="detail_file" level="info" additivity="false">
<AppenderRef ref="detail_file" />
</Logger>
<Logger name="config_file" level="info" additivity="false">
<AppenderRef ref="config_file" />
</Logger>
</Loggers>
</Configuration>
2.java代码需需要引用的
import java.io.File;
import java.io.FileInputStream;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.LogManager;
3.实际调用
public static Logger loger = null;//info日志
public static Logger detail_loger = null;//详情日志
public static Logger config_loger = null;//配置文件日志
public static void main(String[] args) {
File log4jFile = new File("log4j2.xml");
try {
ConfigurationSource source = new ConfigurationSource(new FileInputStream(log4jFile), log4jFile);
Configurator.initialize(null, source);
} catch (Exception e) {
e.printStackTrace();
}
loger = LogManager.getLogger("info_file");
detail_loger = LogManager.getLogger("detail_file");
config_loger = LogManager.getLogger("config_file");
loger.info("测试1”);
detail_loger.info("测试2”);
config_loger .info("测试3”);
}