哈喽,大家好,我是[有勇气的牛排](全网同名)🐮🐮🐮
有问题的小伙伴欢迎在文末[评论,点赞、收藏]是对我最大的支持!!!。
官网:https://www.couragesteak.com/
ALL 最低等级的,用于打开所有日志记录。
TRACE designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志级别,一般不会使用。
DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。
INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。
WARN 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示
ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。
FATAL 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。
OFF 最高等级的,用于关闭所有日志记录。
org.projectlombok lombok
server:port: 8080# 指定读取logback配置文件
logging:config: classpath:log/logback.xml
/resources/logback.xml
%d %p (%file:%line\)- %m%n UTF-8 log/file/fileLog.log log/file/fileLog.log.%d.%i 64 MB %d %p (%file:%line\)- %m%n UTF-8 log/sql/sqlFile.log log/sql/sqlFile.log.%d.%i 64 MB %d %p (%file:%line\)- %m%n UTF-8 log/error/errorFile.log log/error/errorFile.%d.log.%i 64 MB %d %p (%file:%line\)- %m%n UTF-8 ERROR ACCEPT DENY
/** @Author : 有勇气的牛排* @FileName: MyIndex.java* desc :* */package com.couragesteak.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.logging.Logger;@RestController
@Slf4j
public class MyIndex {// private static Logger log = Logger.getLogger(MyIndex.class);// http://127.0.0.1:8080/getInfo?name=cs&age=22@RequestMapping("/getInfo")public String getInfo(String name, int age) {log.info("===============");log.info("name: {}, age: {}", name, age);return name;}}
如果idea没有状lombok插件,则需要再类中添加如下代码,才能使用此日志功能。
private static Logger log = Logger.getLogger(String.valueOf(MyIndex.class));
机制:如果一条日志信息的级别 >= 配置文件的级别,就记录。
trace:追踪,就是程序推进一下,可以写个trace输出
debug:调试,一般作为最低级别,trace基本不用。
info:输出重要的信息,使用较多
warn:警告,有些信息不是错误信息,但也要给程序员一些提示。
error:错误信息。用的也很多。
fatal:致命错误。
输出源
CONSOLE(输出到控制台)
FILE(输出到文件)
格式
SimpleLayout:以简单的形式显示
HTMLLayout:以HTML表格显示
PatternLayout:自定义形式显示
log4j.properties
#log4j.rootLogger=CONSOLE,info,error,DEBUG
log4j.rootLogger=DEBUG,error,CONSOLE,info
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=E:/code/log/info.loglog4j.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=E:/code/log/error.loglog4j.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=E:/code/log/dubug.log
org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-logging
org.projectlombok lombok
org.springframework.boot spring-boot-starter-log4j 1.3.8.RELEASE
server:port: 8083logging:# 指定log4j.properties配置文件路径config: classpath:log4j.properties
private static final Logger log = Logger.getLogger(String.valueOf(MyIndex.class));
在方法前后实现拦截,减少代码打印日志代码冗余。
org.springframework.boot spring-boot-starter-aop
/** @Author : 有勇气的牛排* @FileName: WebLogAspect.java* desc :* */package com.couragesteak.aop;import lombok.extern.slf4j.Slf4j;
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;import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;/*** 定义一个切面,拦截包*/@Aspect
@Component
@Slf4j
public class WebLogAspect {// private static final log logger = logFactory.getlog(WebLogAspect.class);/*** com.couragesteak.controller下所有类* *:所有方法* (..): 所有参数*/@Pointcut("execution(public * com.couragesteak.controller.*.*(..))")public void webLog() {}/*** 前置通知:请求前拦截*/@Before("webLog()")public void doBefore(JoinPoint joinPoint) throws Throwable {// 接收到请求,记录请求内容ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();// 记录下请求内容log.info("URL : " + request.getRequestURL().toString());log.info("HTTP_METHOD : " + request.getMethod());log.info("IP : " + request.getRemoteAddr());Enumeration enu = request.getParameterNames();while (enu.hasMoreElements()) {String name = (String) enu.nextElement();log.info("name:{},value:{}", name, request.getParameter(name));}}/*** 打印目标方法响应信息* */@AfterReturning(returning = "ret", pointcut = "webLog()")public void doAfterReturning(Object ret) throws Throwable {// 处理完请求,返回内容log.info("RESPONSE : " + ret);}
}
原文地址:https://www.couragesteak.com/article/293