springboot配置Log4j日志

目录

  • Pom.xml添加依赖
  • 在控制器记录日志
  • 使用AOP统一处理Web请求日志
    • 导入AOP依赖
    • 写一个切面类

@(springboot配置Log4j日志)
首先要导入log4j属性文件 Log4j.properties

在resources文件夹下导入log4j.properties文件,复制下面的内容时,每行后面如果有空格的话一定要去掉,log4j.appender.File.File为log日志存放的路径。

log4j.rootLogger=INFO,Console,File
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c - %L]%m%n

log4j.appender.File = org.apache.log4j.RollingFileAppender
log4j.appender.File.File = C:/Users/10301/Desktop/test/logs/info/info.log
log4j.appender.File.MaxFileSize = 10MB

log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c - %L]%m%n

Pom.xml添加依赖

去除springboot的log,添加log4j,因为springboot自带的log4j不起作用。

<!-- 排除springboot自带的logging 日志-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <exclusions>
      <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
      </exclusion>
  </exclusions>
</dependency>

<!-- 重新导入log4j -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-log4j</artifactId>
  <version>1.3.8.RELEASE</version>
</dependency>

版本号一定要注意,springboot下的log4j的版本最新是1.3.8,如果你的springboot的parent版本过高,那么在添加log4j时就添加自己的版本。

在控制器记录日志

@RestController //声明Rest风格的控制器
@RequestMapping("user")
public class UserController {
    @Autowired
    private UserServiceImpl userService;
    Logger logger=Logger.getLogger(UserController.class);

    @RequestMapping("register")
    @ResponseBody
    public String register(String username,String password){
        //记录客户端请求参数
        logger.info("username"+username+"password"+password);

        //把数据保存到test1数据库
        userService.register(username,password);
        return "success";
    }
}

然后日志就会在设置的路径目录里生成log日志,并记录下客户端的请求参数。

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

导入AOP依赖

<!-- AOP -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

写一个切面类

在java文件夹下新建包aspect,包里新建切面类,这个类在访问指定的controller之前会拦截并进入该类执行里面的方法。

package com.gyf.aspect;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@Aspect
@Component//配置bean
public class WebLogAspect {
    private Logger logger = Logger.getLogger(getClass());

    @Pointcut("execution(public * com.gyf.web.controller..*.*(..))")
    public void webLog() {

    }

    @Before("webLog()")
    public void doBefore(JoinPoint joinPoint) throws Throwable {
        // 接收到请求,记录请求内容
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        // 记录下请求内容
        logger.info("---------------request----------------");
        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:" + name + " - value:" + request.getParameter(name));
        }
    }
    @AfterReturning(returning = "ret", pointcut = "webLog()")
    public void doAfterReturning(Object ret) throws Throwable {
        logger.info("---------------response----------------");
        // 处理完请求,返回内容
        logger.info("RESPONSE : " + ret);
    }
}

然后controller中就不需要加下面蓝色的内容了,因为这些已经在刚才的切面类中配过了。

这就已经配置好了,重启springboot项目,访问控制层的方法,会记录相应日志(报错不会记录)

原文地址:https://www.cnblogs.com/fantongxue/p/12443405.html

时间: 2024-10-10 04:37:10

springboot配置Log4j日志的相关文章

spring-boot配置log4j日志

spring boot默认使用logback日志记录工具,修改为log4j: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.0.2.RELEASE</version> <exclusions> <exclusion>

springboot配置logback日志

springboot配置logback日志 java web 下有好几种日志框架,比如:logback,log4j,log4j2(slj4f 并不是一种日志框架,它相当于定义了规范,实现了这个规范的日志框架就能够用 slj4f 调用).本篇主要说明spring boot配置logback springboot配置日志框架之前,要先取消springboot默认的日志框架 一.在pom.xml中加入取消默认日志框架 <dependency> <groupId>org.jxls</

基于JMX动态配置Log4J日志级别

先来看比较low的修改日志级别的方式,在写程序里面. http://blog.gssxgss.me/java%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8A%A8%E6%80%81%E6%94%B9%E5%8F%98%E6%97%A5%E5%BF%97%E7%BA%A7%E5%88%AB/ 再来通过JMX的方法动态修改程序的日志级别. https://blog.csdn.net/z2007130205/article/details/23910431 package com.m

springboot配置Log4j(将输出日志打印在控制台)

在springboot整合mybatis开发过程中,配置Log4j文件以便查看Mybatis操作数据库的过程 编辑器:IDEA 第一步:pom.xml中引入依赖(mybatis依赖和log4j2依赖) 如下: #在spring-boot-starter-web中自动配置了logging依赖,在使用Log4j时需要先排除其依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g

springboot 关于log4j日志配置

自动加载配置文件:(1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解.log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件.然后加载配置.配置文件放置位置正确,不用在程序中手动加载log4j配置文件.如果将配置文件放到了config文件夹下,在build Path中设置下就好了. log4j日志配置文件的命名一般采用log4j.properties,位置放在resources/log4j.

Spring项目配置log4j日志功能

一,添加log4j依赖包 可从官网上下载该依赖包log4j-x.x.xx.jar,下载后 build path,添加依赖包如使用maven,可以添加如下依赖 <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>

配置log4j日志信息

一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR <

springboot配置log4j

log4j.properties log4j.rootLogger=INFO,Console,File log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.Conversi

eclipse中纯java配置log4j日志

1.新建java项目log4Test 2.新建目录lib,把log4j-1.2.9.jar包放入lib目录 3.右键工程,选择Properties->Java Build Path->Libraries->Add JARs...,选择lib下的log4j-1.2.9.jar 4.在src目录下新建两个文件log4j.properties和log.txt log4j.properties文件配置如下: log4j.appender.stdout.layout.ConversionPatte