日志分级

Jingxc大约 3 分钟java后端java后端Logger

日志分级

如果想要对方法的运行状态进行统一的日志收集,请参见日志收集

这里主要是对日志的级别进行分级输出

maven依赖

这里采用Apache Log4j » 1.2.17进行日志收集,也可以选择其他的log4j依赖版本

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

日志级别

  • 低级别日志文件会保存高级别日志文件的所有日志信息,如:
  • ERROR 级别日志文件异常日志,
  • WARN 级别日志文件保存异常+警告日志
  • INFO 级别日志文件保存异常+警告+ INFO 级别日志(依次类推)

log4j定义了8个级别的log优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。

log4j.rootLogger=INFO, CONSOLE, ERROR, WARN, INFO, DEBUG, ALL

提示

第一个参数INFO 是控制台的日志输出级别(表示输出INFO 级别以下所有日志,可配置),例:

log4j.rootLogger=INFO, CONSOLE, ERROR, WARN, INFO

控制台输出

#输出信息到控制台CONSOLE
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 = %d{yyyy-MM-dd HH:mm:ss,SSS}  [%t] [%c] [%p] - {%m%n}

文件输出

#输出INFO级别以上的内容到info.log中
log4j.logger.INFO=INFO
log4j.appender.INFO = org.apache.log4j.DailyRollingFileAppender
log4j.appender.INFO.File = logs/info/info.log
log4j.appender.INFO.DatePattern ='.'yyyy-MM-dd
log4j.appender.INFO.Threshold = INFO
log4j.appender.INFO.Append = true
log4j.appender.INFO.layout = org.apache.log4j.PatternLayout
log4j.appender.INFO.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

log4j.properties

通过log4j.appender.WARN.File参数指定日志输出文件的位置,可以做到日志分级输出

log4j.rootLogger=INFO, CONSOLE, ERROR, WARN, INFO

#-----------------------------------------------------------------------------------------------------
#输出信息到控制台CONSOLE
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 = %d{yyyy-MM-dd HH:mm:ss,SSS}  [%t] [%c] [%p] - {%m%n}

#-----------------------------------------------------------------------------------------------------
#输出ERROR 级别以上的日志到error.log
log4j.logger.ERROR=ERROR
log4j.appender.ERROR = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERROR.File =logs/error/error.log
log4j.appender.ERROR.DatePattern ='.'yyyy-MM-dd
log4j.appender.ERROR.Threshold = ERROR
log4j.appender.ERROR.Append = true
log4j.appender.ERROR.layout = org.apache.log4j.PatternLayout
log4j.appender.ERROR.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

#-----------------------------------------------------------------------------------------------------
#输出WARN 级别以上的日志到warn.log
log4j.logger.WARN=WARN
log4j.appender.WARN = org.apache.log4j.DailyRollingFileAppender
log4j.appender.WARN.File =logs/warn/warn.log
log4j.appender.WARN.DatePattern ='.'yyyy-MM-dd
log4j.appender.WARN.Threshold = WARN
log4j.appender.WARN.Append = true
log4j.appender.WARN.layout = org.apache.log4j.PatternLayout
log4j.appender.WARN.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

#-----------------------------------------------------------------------------------------------------
#输出INFO级别以上的内容到info.log中
log4j.logger.INFO=INFO
log4j.appender.INFO = org.apache.log4j.DailyRollingFileAppender
log4j.appender.INFO.File = logs/info/info.log
log4j.appender.INFO.DatePattern ='.'yyyy-MM-dd
log4j.appender.INFO.Threshold = INFO
log4j.appender.INFO.Append = true
log4j.appender.INFO.layout = org.apache.log4j.PatternLayout
log4j.appender.INFO.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

#-----------------------------------------------------------------------------------------------------
#输出DEBUG 级别以上的日志到debugger.log
#log4j.logger.DEBUG=DEBUG
#log4j.appender.DEBUG = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.DEBUG.File = logs/debugger/debugger.log
#log4j.appender.DEBUG.DatePattern ='.'yyyy-MM-dd
#log4j.appender.DEBUG.Threshold = DEBUG
#log4j.appender.DEBUG.Append = true
#log4j.appender.DEBUG.layout = org.apache.log4j.PatternLayout
#log4j.appender.DEBUG.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

##-----------------------------------------------------------------------------------------------------
##输出ALL级别的日志到all.log
#log4j.logger.ALL=ALL
#log4j.appender.ALL = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.ALL.File = logs/all/all.log
#log4j.appender.ALL.DatePattern ='.'yyyy-MM-dd
#log4j.appender.ALL.Threshold = ALL
#log4j.appender.ALL.Append = true
#log4j.appender.ALL.layout = org.apache.log4j.PatternLayout
#log4j.appender.ALL.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

使用方法

将log4j.properties文件,已配置文件的形式保存在Spring Boot项目的根目录下,也就是src/main/resources目录下

在需要使用log4j的类上添加@Log4j即可

@Log4j
@Aspect
@Component
public class SysLogAspect {

    @Pointcut("@annotation(top.jingxc.server.aop.OperationLogger)")
    public void controllerAspect() {

    }

    /**
     * 前置通知
     *
     * @param joinPoint
     * @throws Throwable
     */
    @Before("controllerAspect()")
    public void doBefore(JoinPoint joinPoint) throws Throwable {

        Map<String, Object> param = new HashMap<>();

        String classType = joinPoint.getTarget().getClass().getName();
        Class<?> clazz = Class.forName(classType);
        String clazzName = clazz.getName();
        param.put("clazzName", clazzName);
        String methodName = joinPoint.getSignature().getName();
        param.put("methodName", methodName);
        String[] paramNames = getFieldsName(this.getClass(), clazzName, methodName);
        Object[] args = joinPoint.getArgs();
        param.put("args", args);
        param.put("paramNames", paramNames);
        log.info("******进入方法*********\n" + JSON.toJSONString(param)
                + "\n***************************************************************************************");

        param = null;
    }

    ...
}
上次编辑于:
贡献者: Jingxc