springBoot使用slf4j处理日志

mac2024-03-14  17

1.application.yml

server: port: 8080 spring: thymeleaf: mode: html profiles: active: dev

2.application-dev.yml

root: info  日志级别

file: log/blog-dev.log  //日志生成的位置

spring: datasource: username: admin password: 123456 url: jdbc:mysql://localhost:3306/数据库名称 driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true logging: level: root: info file: log/blog-dev.log

3.Controller

@Controller public class IndexController { @GetMapping("/") public String index(){ return "index"; } }

4.切面处理日志

 

import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.util.Arrays; //切面 @Aspect @Component public class LogAspect { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Pointcut("execution(* com.example.demo.web.*.*(..))") public void log(){} @Before("log()")//前置通知 public void doBefore(JoinPoint joinPoint){ ServletRequestAttributes attributes =(ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request =attributes.getRequest(); String url=request.getRequestURL().toString(); //获取url String ip=request.getRemoteAddr(); //获取ip String classMehod=joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName(); Object[] args = joinPoint.getArgs(); //获取参数 RequestLog requestLog = new RequestLog(url,ip,classMehod,args); logger.info("Request: {}",requestLog); } public class RequestLog{ private String url; private String ip; private String classMehod; private Object[] args; public RequestLog(String url, String ip, String classMehod, Object[] args) { this.url = url; this.ip = ip; this.classMehod = classMehod; this.args = args; } public String toString() { return "RequestLog{" + "url='" + url + '\'' + ", ip='" + ip + '\'' + ", classMehod='" + classMehod + '\'' + ", args=" + Arrays.toString(args) + '}'; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getClassMehod() { return classMehod; } public void setClassMehod(String classMehod) { this.classMehod = classMehod; } public Object[] getArgs() { return args; } public void setArgs(Object[] args) { this.args = args; } } }

5.测试

打印的参数

有什么错误或者可以指教的欢迎讨论。

最新回复(0)