SpringBoot-整合log4j日志记录

新建log4j配置文件

文件名称log4j.properties

#log4j.rootLogger=CONSOLE,info,error,DEBUG

log4j.rootLogger=info,error,CONSOLE,DEBUG

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender    

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout    

log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm}[%t][%c][%p]-%m%n    

log4j.logger.info=info

log4j.appender.info=org.apache.log4j.DailyRollingFileAppender

log4j.appender.info.layout=org.apache.log4j.PatternLayout    

log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm}[%t][%c][%p]-%m%n 

log4j.appender.info.datePattern='.'yyyy-MM-dd

log4j.appender.info.Threshold = info  

log4j.appender.info.append=true  

#log4j.appender.info.File=/home/admin/pms-api-services/logs/info/api_services_info

log4j.appender.info.File=/Users/dddd/Documents/testspace/pms-api-services/logs/info/api_services_info

log4j.logger.error=error 

log4j.appender.error=org.apache.log4j.DailyRollingFileAppender

log4j.appender.error.layout=org.apache.log4j.PatternLayout    

log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm}[%t][%c][%p]-%m%n 

log4j.appender.error.datePattern='.'yyyy-MM-dd

log4j.appender.error.Threshold = error  

log4j.appender.error.append=true  

#log4j.appender.error.File=/home/admin/pms-api-services/logs/error/api_services_error

log4j.appender.error.File=/Users/dddd/Documents/testspace/pms-api-services/logs/error/api_services_error

log4j.logger.DEBUG=DEBUG

log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender

log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout    

log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm}[%t][%c][%p]-%m%n 

log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd

log4j.appender.DEBUG.Threshold = DEBUG  

log4j.appender.DEBUG.append=true  

#log4j.appender.DEBUG.File=/home/admin/pms-api-services/logs/debug/api_services_debug

log4j.appender.DEBUG.File=/Users/dddd/Documents/testspace/pms-api-services/logs/debug/api_services_debug

 

log4j代码

private static final Logger logger = LoggerFactory.getLogger(IndexController.class);

Maven依赖

<parent>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-parent</artifactId>

            <version>2.0.0.RELEASE</version>

      </parent>

      <dependencies>

            <!-- SpringBoot 核心组件 -->

            <dependency>

                  <groupId>org.springframework.boot</groupId>

                  <artifactId>spring-boot-starter-web</artifactId>

            </dependency>

            <dependency>

                  <groupId>org.springframework.boot</groupId>

                  <artifactId>spring-boot-starter-tomcat</artifactId>

            </dependency>

            <dependency>

                  <groupId>org.apache.tomcat.embed</groupId>

                  <artifactId>tomcat-embed-jasper</artifactId>

            </dependency>

            <!-- spring boot start -->

            <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>

 

            <!-- springboot-log4j -->

            <dependency>

                  <groupId>org.springframework.boot</groupId>

                  <artifactId>spring-boot-starter-log4j</artifactId>

                  <version>1.3.8.RELEASE</version>

            </dependency>

      </dependencies>

 

使用AOP统一处理Web请求日志

POM文件新增依赖

    <dependency>

             <groupId>org.springframework.boot</groupId>

             <artifactId>spring-boot-starter-aop</artifactId>

    </dependency>

 WebLogAspect:

@Aspect

@Component

public class WebLogAspect {

 

      private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);

 

      @Pointcut("execution(public * com.itmayiedu.controller.*.*(..))")

      public void webLog() {

      }

 

      @Before("webLog()")

      public void doBefore(JoinPoint joinPoint) throws Throwable {

            // 接收到请求,记录请求内容

            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

            HttpServletRequest request = attributes.getRequest();

            // 记录下请求内容

            logger.info("URL : " + request.getRequestURL().toString());

            logger.info("HTTP_METHOD : " + request.getMethod());

            logger.info("IP : " + request.getRemoteAddr());

            Enumeration<String> enu = request.getParameterNames();

            while (enu.hasMoreElements()) {

                  String name = (String) enu.nextElement();

                  logger.info("name:{},value:{}", name, request.getParameter(name));

            }

      }

 

      @AfterReturning(returning = "ret", pointcut = "webLog()")

      public void doAfterReturning(Object ret) throws Throwable {

            // 处理完请求,返回内容

            logger.info("RESPONSE : " + ret);

      }

}

原文地址:https://www.cnblogs.com/XJJD/p/10392802.html