简单日志门面Slf4j的配置使用

版权声明:欢迎转载,若转载请给出本文链接 https://blog.csdn.net/niaonao/article/details/86435761
简单日志门面Slf4j的配置使用

一. 简单日志门面介绍

1.1 门面模式

    门面模式的原理是为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。
    门面模式的核心是Façade,即门面对象,门面对象核心为几个点:

  • 知道所有子角色的功能和责任
  • 将客户端发来的请求委派到子系统中,没有实际业务逻辑
  • 不参与子系统内业务逻辑的实现

1.2 简单日志门面(Simple Logging Facade for Java)

1.2.1 介绍
    不是具体的日志解决方案,它只服务于各种各样的日志系统.即Slf4j只是一个日志标准,Slf4j只是提供日志接口,提供获取日志对象的方法,并不是具体的日志实现.日志管理仍需要具体的日志实现,比如logback,log4j等.
1.2.2 使用方式
    如果使用Slf4j只引入自身jar包不引入日志实现,是不能打印日志的.Slf4j的优势在于只要项目使用Slf4j,开发者无需关心日志的实现,只需要项目一处配置实现,全局可用,更新与维护都十分方便.
    引入注解,直接使用log对象即可.

@Slf4j
public class DepositController {
    public void getProjectName(){
        log.info(“log info.);
    }
}

二. Slf4j配置使用

    此处使用IDEA工具,以SpringBoot项目为例.

2.1 Slf4j依赖配置

    项目pom文件需要引入以下依赖,使用IDEA工具开发要求IDEA安装插件Lombok Plugin 插件.

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.7.25</version>
        </dependency>

    若未安装插件, 进入Settings 下Plugins 在线查询Lombok Plugin 并安装.插件安装后重启IDEA生效.
在这里插入图片描述
    此时可引入注解@Slf4j并直接使用log变量即可.(先安装插件,才能引用log对象)
在这里插入图片描述
    演示代码如下:

import lombok.extern.slf4j.Slf4j;

@Slf4j
@RequestMapping("/deposit")
@RestController
public class DepositController {

    //响应请求打印日志
    @PostMapping(value = "/getProjectName", produces = "application/json;charset=UTF-8")
    public String getProjectName(){
        log.info("getProject info.");
        return "Deposit Project!";
    }
}

2.2 日志实现配置

    简单日志门面需要依赖具体的日志实现,此处配置日志的实现logback-spring.xml.
    日志的配置,本身SpringBoot 的application.yml支持配置, 但建议独立出来一个配置文件便于维护, 这里配置logback-spring.xml文件.

<configuration>
    <appender name="STDOUT"
        class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>./logs/ecrp.deposit.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>200MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.springframework.jdbc.core.JdbcTemplate"
        level="debug"></logger>

    <logger
        name="org.springframework.jdbc.core.StatementCreatorUtils"
        additivity="false" level="TRACE">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>
    <logger name="com.nascent" additivity="false" level="TRACE">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>
    <root level="info">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

    此时运行项目, 访问接口, 项目日志可输出到控制台.打印日志存储到项目deposit一级目录logs下./logs/ecrp.%d{yyyy-MM-dd}.%i.log
如下:
在这里插入图片描述
    更多:slf4j作用及其实现原理
.

猜你喜欢

转载自blog.csdn.net/niaonao/article/details/86435761