zoukankan      html  css  js  c++  java
  • 如何配置 Slf4j

    一,前言

    日常开发中经常需要在控制台输出一些信息,如果这些东西不加管理,那么很容易就被输出信息淹没。幸好,我们有日志相关的库来帮助我们格式化控制台的输出。

    这篇文章将介绍如何配置 Slf4j 及其具体的实现,后面会介绍如何配置成彩色的。

    二,介绍

    之前看一些文章就对 Slf4j 略有所闻,搬砖的时候也稍微用过,只不过没有仔细去看。今天在写代码的时候,想到要用日志工具了,所以直接在 maven 中引入了下面的依赖。

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.0-alpha1</version>
    </dependency>
    

    一运行就报错了。

    搜一搜,StackOverflow 上就一个言简意赅的回答。Slf4j 是日志框架的抽象,它提供了接口,不提供实现!具体的实现,用户可以自由选择任何一个日志框架,比如 Log4j, Logback 等等。所以,我们只需要 maven 中引入具体的实现就好了。

    SLF4J stands for Simple Logging Facade for Java. It provides a simple abstraction of all the logging frameworks. It enables a user to work with any of the logging frameworks such as Log4j, Logback, JUL (java.util.logging), etc. using single dependency.

    这里我选择了 Log4j,直接在 maven 中引入下面的依赖。

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>2.0.0-alpha1</version>
    </dependency>
    

    然后我们在运行一下项目。又是一波报错,下面这个报错说没有指定 appender,所以应该是没有配置文件的缘故。

    我们再搜一搜,StackOverflow 还有是有回答。我们只需要在 classpath 中放入 log4j.properties 就好了。

    于是乎,我们在 resouces 文件夹下面放入 log4j.properties 就好了。

    至于如何配置,我们还需要去具体的看每个实现的配置方式,比如 log4j 要怎么配置,logback 又有怎么配置。这里分享一下我的配置。

    log4j.properties,ConversionPattern 我们可以参考这里

    log4j.rootLogger=DEBUG, stdout
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=log.ColorPatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} [%p]  %m%n
    
    

    此外还需要一个自定义的类文件,放在 log 包下面。颜色是 extends 默认的 PatternLayout,并覆盖 format 方法来实现的,至于颜色怎么选,具体可以看这个

    package log;
    
    import org.apache.log4j.Level;
    import org.apache.log4j.PatternLayout;
    import org.apache.log4j.spi.LoggingEvent;
    
    public class ColorPatternLayout extends PatternLayout {
    
        @Override
        public String format(LoggingEvent event) {
            Level level = event.getLevel();
            String prefix = "33[33m";
            String suffix = "33[0m";
            switch (level.toInt()) {
                case Level.TRACE_INT:
                    prefix = "33[30m";
                    break;
                case Level.DEBUG_INT:
                    prefix = "33[34m";
                    break;
                case Level.INFO_INT:
                    prefix = "33[35m";
                    break;
                case Level.WARN_INT:
                    prefix = "33[33m";
                    break;
                case Level.ERROR_INT:
                    prefix = "33[31m";
                    break;
            }
            return prefix + super.format(event) + suffix;
        }
    }
    
    

    三,总结

    这篇文章简单介绍了如何使用 Slf4j 这个框架,不涉及原理,只是简简单单地讲了讲如何使用。它背后做的事情还挺有意思的,把接口写好,实现就看不同的库。

  • 相关阅读:
    JS播放视频代码
    kubernetes系列(小知识):kubectl命令自动补全
    docker(部署常见应用):docker部署mysql
    docker(部署常见应用):docker部署nginx
    docker(二):CentOS安装docker
    docker(一):docker是什么?
    kubernetes系列:(二)、kubernetes部署mysql(单节点)
    越早明白越好的人生道理(转载)
    JetBrains系列IDE快捷键大全(转载)
    spring-boot系列:(一)整合dubbo
  • 原文地址:https://www.cnblogs.com/zzk0/p/14335636.html
Copyright © 2011-2022 走看看