Springboot集成Log4j2

1. pom依赖:

(1)web自带的log4j包不全,需要排除,并重新引入:

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>  
	            <exclusion>  
	                <groupId>org.springframework.boot</groupId>  
	                <artifactId>spring-boot-starter-logging</artifactId>  
	            </exclusion>  
        	</exclusions>
		</dependency>
		
		<dependency> 
	        <groupId>org.springframework.boot</groupId>  
	        <artifactId>spring-boot-starter-log4j2</artifactId>  
	    </dependency>

2. 配置log4j2配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="info">
	 <Properties>
        <property name="log_pattern">%d{yy-MM-dd HH:mm:ss,SSS} %-5p [%X{ip}|%X{user}|%X{globalNum}] %c{2} - %m%n</property> 
        <property name="basePath">c:\\logs</property>

        <property name="common-msg">${basePath}/datalink.log</property>
        <property name="rollingfile_common-msg">${basePath}/%d{yyyy-MM}/datalink-%d{yyyy-MM-dd}[%i].log.gz</property>

        <property name="error-msg">${basePath}/error.log</property>
        <property name="rollingfile_error-msg">${basePath}/%d{yyyy-MM}/error-%d{yyyy-MM-dd}[%i].log.gz</property>
        
        <property name="log.sql.level">info</property>

    </Properties>
    <!--先定义所有的appender -->
    <appenders>
        <!--输出控制台的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
            <!--输出日志的格式 -->
            <PatternLayout pattern="${log_pattern}" />
        </Console>


        <RollingFile name="rollingfile_common-msg"
            filename="${common-msg}" filePattern="${rollingfile_common-msg}" append="true">
            <Filters>
                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="${log_pattern}" />
            <Policies>
                <TimeBasedTriggeringPolicy/>
        		<SizeBasedTriggeringPolicy size="250MB"/>
            </Policies>
        </RollingFile>

        <RollingFile name="rollingfile_error-msg"
            filename="${error-msg}" filePattern="${rollingfile_error-msg}" append="true">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${log_pattern}" />
            <Policies>
                <TimeBasedTriggeringPolicy/>
        		<SizeBasedTriggeringPolicy size="250MB"/>
            </Policies>
        </RollingFile>
    </appenders>
    
    <Loggers>  
        <Root level="info">  
            <AppenderRef ref="Console" />  
            <AppenderRef ref="rollingfile_error-msg" />  
            <AppenderRef ref="rollingfile_common-msg" />  
        </Root>
 
        <Logger name="datalink-log" level="${log.sql.level}" additivity="true">
             <AppenderRef ref="Console" />  
            <AppenderRef ref="rollingfile_error-msg" />  
            <AppenderRef ref="rollingfile_common-msg" /> 
        </Logger>
    </Loggers>
</configuration>

3.封装LoggerUtil

public class LoggerUtil {
	
	public static void setCommonLoggerParam() {
		//存入当前服务器ip地址
		String ip = "";
		try {
			InetAddress address = InetAddress.getLocalHost();
			ip = address.getHostAddress();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
		ThreadContext.put("ip", ip);
		
		//存入当前用户账号
		ThreadContext.put("user", UserUtil.getName());
		
		//存入当前用户账号
		ThreadContext.put("globalNum", UUID.randomUUID().toString());
	}
	
	public static Logger getLogger(Class clazz) {
		return getLogger(clazz, null);
		
	}
	
	public static Logger getLogger(Class clazz, String globalNum) {
		
		ThreadContext.put("globalNum", globalNum);
		return LoggerFactory.getLogger(clazz);
		
	}

}

猜你喜欢

转载自blog.csdn.net/qq_28060549/article/details/88633669