zoukankan      html  css  js  c++  java
  • spring boot 配置 log4j2

    版本信息:

    spring cloud 版本Greenwich.SR2
    spring boot 版本2.1.8.RELEASE

    官网文档:

    http://logging.apache.org/log4j/2.x/manual/configuration.html

    以下每个步骤不可缺失

    1. pom.xml配置
      需要排除spring-boot-starter自带的logback依赖,不然日志无法记录在日志文件里

       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter</artifactId>
           <exclusions>
               <!-- 排除自带的logback依赖 -->
               <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. log4j配置
      新建log4j.xml放在resources目录下
      设置console,InfoLog,ErrorLog的输出配置以及日志目录

      Configuration status="INFO" 设置的是console的输出级别

       <?xml version="1.0" encoding="UTF-8"?>
       <Configuration status="INFO">
           <Appenders>
               <!--添加一个控制台追加器-->
               <Console name="Console" target="SYSTEM_OUT" follow="true">
                   <PatternLayout>
                       <pattern>[%-5p] %d %c - %m%n</pattern>
                   </PatternLayout>
               </Console>
               
               <!-- info log -->
               <RollingFile name="InfoLog" fileName="/opt/logs/scm-warehouse/info.log"
                            filePattern="/opt/logs/scm-warehouse/info-%d{yyyy-MM-dd}.log">
                   <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level %class{36}.%M[%L] - %msg%xEx%n"/>  
                   <Policies>
           			<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
           		</Policies>
                   <Filters>
                   	<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> 
                   	<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
                   </Filters> 
               </RollingFile>
               
               <!-- error log -->
               <RollingFile name="ErrorLog" fileName="/opt/logs/scm-warehouse/error.log"
                            filePattern="/opt/logs/scm-warehouse/error-%d{yyyy-MM-dd}.log">
                   <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%-5level] %class{36}.%M[%L] - %msg%xEx%n"/>  
           		<Policies>
           			<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
           		</Policies>
                   <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />  
               </RollingFile>            
           </Appenders>
           <Loggers>
               <Root level="info">
                   <AppenderRef ref="Console" />
                   <AppenderRef ref="InfoLog" />
                   <AppenderRef ref="ErrorLog" />
               </Root>
           </Loggers>
       </Configuration>
      
    3. yml配置,指定配置

       logging:
         config: classpath:log4j.xml
         level:
       	root: info
      
    4. java代码内使用

       import org.slf4j.Logger;
       import org.slf4j.LoggerFactory;
       private static Logger logger = LoggerFactory.getLogger(XXXclass.class);
       logger.info("xxx);
  • 相关阅读:
    线程之Thread
    如何通过HTTP优雅调用第三方-Feign
    Spring AOP核心源码
    Spring-beans之BeanFactory初始化
    spring-core源码走读
    power of two
    排序算法(二)两种选择排序
    排序算法(一)四种冒泡排序
    约瑟夫问题
    我理解的CLH
  • 原文地址:https://www.cnblogs.com/cuiyf/p/12120989.html
Copyright © 2011-2022 走看看