欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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
log4j2配置log4j2配置
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”);
	}

相关标签: java代码