日志篇-SLF4J快速上手

本文主要记录如何使用SLF4J进行日志的记录。在日常开发中,系统日志对整个项目的重要性不言而喻,定位、排查问题,项目埋点,日志都作为系统完善必不可少的一部分。

本文分为以下几个部分:

  • 是什么

  • 永远的Hello World

  • 将日志以文件形式输出到本地

  • 其他

一 、SLF4J是什么?

Java的简单日志记录外观(SLF4J)可作为各种日志记录框架(例如java.util.logging,logback和log4j)的简单外观或抽象。SLF4J允许最终用户在部署时插入所需的日志记录框架。请注意,启用SLF4J的库/应用程序意味着仅添加一个强制性依赖项,即 slf4j-api-2.0.0-alpha2-SNAPSHOT.jar

一句话:SLF4J 是整合日志工具后暴露的一整套接口,对原有日志记录工具进行了一次封装

二 、永远的HelloWorld
  1. pom文件导入依赖(此SLF4J GAV 绑定 log4j日志工具)
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.25</version>
</dependency>
  1. code
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}
  1. 输出结果
[INFO]  2019-11-12 14:40:59 : test.HelloWorld Hello World
三 、 将日志以文件形式输出到本地
  1. resources目录下增加log4j配置文件,位置如下

日志快速上手

  1. log4j.properties 内容如下
LOG_LEVEL=INFO
log4j.rootLogger=${LOG_LEVEL},CONSOLE,I

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=utf-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%p]  %d{yyyy-MM-dd HH:mm:ss} : %C %L line , %m%n

log4j.logger.FILE_LOG=INFO,I
#log4j.additivity.FILE_LOG=false  ## 指定文件名称
log4j.appender.I=org.apache.log4j.DailyRollingFileAppender
#输出位置
log4j.appender.I.File=D:/logs/fileinfo.log
log4j.appender.I.Encoding=utf-8
log4j.appender.I.Threshold=INFO
log4j.appender.I.DatePattern='.'yyyy-MM-dd
log4j.appender.I.layout=org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern= %d{yyyy-MM-dd HH:mm:ss} %C : %m%n
四 、其他

要切换日志记录框架,只需在类路径上替换slf4j绑定即可。例如,要从java.util.logging切换到log4j,只需将slf4j-jdk14-1.7.28.jar替换为slf4j-log4j12-1.7.28.jar。同理如果不使用log4j日志记录框架,切换maven依赖就好了。

SLF4J不依赖任何特殊类的装载机。实际上,每个SLF4J绑定*在编译时都 进行了硬连线 ,以使用一个且仅一个特定的日志记录框架。例如,slf4j-log4j12-1.7.28.jar绑定在编译时绑定为使用log4j。在代码中,除了 slf4j-api-1.7.28.jar 之外,您还只需 将选择的一个绑定和一个绑定绑定到适当的类路径位置即可。在类路径上不要放置多个绑定。这是一般想法的图形化说明。

slf4j架构

SLF4J接口及其各种适配器非常简单。大多数熟悉Java语言的开发人员应该能够在不到一小时的时间内阅读并完全理解代码。无需了解类加载器,因为SLF4J不会使用它,也不会直接访问任何类加载器。因此,使用Jakarta Commons Logging(JCL)观察到的SLF4J不会遇到类加载器问题或内存泄漏。

猜你喜欢

转载自blog.csdn.net/xxyybs/article/details/103028937