#
日志系统

lin-cms 的日志系统基于 spring-boot 和 logback,在此之上提供了日志记录文件和请求日志记录两个功能。

# 使用

lin-cms 推荐使用 lombok 注解的方式去记录日志。

首先,请在需要进行日志记录的类上打上Slf4j注解,如下:

@Slf4j
public class RequestLogInterceptor extends HandlerInterceptorAdapter {
  // 省略
}

当开启该注解后,便可以在类中方便的使用log进行日志记录:

log.info("[{}] -> [{}] from: {} costs: {}ms",
                request.getMethod(),
                request.getServletPath(),
                request.getRemoteAddr(),
                System.currentTimeMillis() - startTime.get()
 );

logback 日志共有五个等级,分别为tracedebuginfowarnerror,即:

log.trace();
log.info();
log.warn();
log.debug();
log.error();

请根据实际的日志等级调用正确的方法。

lin-cms 仅在 spring-boot 和 logback 的基础上,增加了一些必要的日志功能,因此保留 了 spring-boot 的日志配置方式,如果你不熟悉 spring-boot 可以查阅一下它的文档。

# 日志记录

lin-cms 将日志会记录到终端和文件两个地方,在生产环境下只会向文件中记录。记录日志 的文件默认在工作目录下的log文件夹中,如下:

logs
└── 2020-01
  ├── 2020-01-06.log
  ├── 2020-01-09.log
  └── 2020-01-13.log

文件以一个月作为一个子目录,每一个子目录下皆有每一天的日志文件。当某一天日志文件 超过一定的大小时,会被切割,默认的切割大小为5M

当然你也可以通过修改 resources 目录下的logback-spring.xml文件来修改日志的记录 方式。

logback-spring.xml 文件中的log.path属性可以指定日志文件的记录位置,如下:

<property name="log.path" value="logs/"/>

如果需要改变日志文件的存储位置,可以修改该属性(可以为绝对路径)达到你的目的。

# 日志配置

logback-spring.xml文件是 logback 默认配置文件,你可以更换appender,修改日志 文件分割大小。其中几个重要的配置如下:

<property name="log.path" value="logs/"/>    // 日志存储文件路径
<appender name="FILE" class="io.github.talelin.core.logger.AdvanceRollingFileAppender">  // 自定义日志appender
    <dir>${log.path}</dir> // 日志存储位置
    <maxFileSize>5MB</maxFileSize> // 日志切割大小,默认为5M
    <encoder> // 日志记录格式
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset> // 文件默认编码
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>debug</level> // 日志过滤等级,默认为debug,即记录debug以上的等级
    </filter>
</appender>

logback 中,日志等级是一个较为重要的概念 ,tracedebuginfowarnerror的等级依次递增,只要日志等级足够才会 被记录,如上面的配置文件中指定了日志过滤等级为debug,则在debug之上的等级日志 会被记录,所以trace日志不会被记录。

大多数情况下,你只需要修改上面提到的几个配置就足够了,如果你需要定制自己的日志格 式和记录方式,可以查阅 logback 文档。

一般情况下,我们都推荐通过application.properties配置文件来改变日志记录等级,如 下:

# 日志等级
logging.level.io.github.talelin.demo.mapper=debug
logging.level.web=debug
# 日志配置文件
logging.config=classpath:logback-spring.xml
# 是否开启请求日志记录
request-log.enabled=true

logging.level可以指定日志记录等级,io.github.talelin.demo.mapper是包名,表示 这个包下的所有日志记录等级均为debug,你也可以采用这种方式来指定特定包的日志等 级。

request-log.enabled表示是否开启请求日志记录,默认是开,当然如果你不需要也可以 关闭。

TIP

如果你使用 lin-cms,我们还是建议你直接使用我们的日志模式,在 application.properties 配置相应包的日志记录等级其实已经足够了。