一、简介

slf4j主要是为了给Java日志访问提供一个标准、规范的API框架,其主要意义在于提供接口,具体的实现可以交由其他日志框架,例如log4j和logback等。当然slf4j自己也提供了功能较为简单的实现,但是一般很少用到。对于一般的Java项目而言,日志框架会选择slf4j-api作为门面,配上具体的实现框架(log4j、logback等),中间使用桥接器完成桥接。本文侧重分析slf4j,也会解释门面+桥接器+实现的原理。

二、使用

1.手动添加三个jar包:slf4j-api-1.8.0-alpha2.jar、log4j-1.2.17.jar、slf4j-log4j12-1.8.0-alpha2.jar

2.配置log4j.properties配置文件,放在classpath下,log4j会自动加载,也可以改变目录后再代码中加载,具体内容如下:

# rootLogger参数分别为:根Logger级别,输出器stdout,输出器log
log4j.rootLogger = info,stdout,log# 输出信息到控制台
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d [%-5p] %l %rms: %m%n# 输出DEBUG级别以上的日志到D://logs/debug.log
log4j.appender.log = org.apache.log4j.DailyRollingFileAppender
log4j.appender.log.DatePattern = '.'yyyy-MM-dd
log4j.appender.log.File = D://debug.log
log4j.appender.log.Encoding = UTF-8
#log4j.appender.log.Threshold = INFO
log4j.appender.log.layout = org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern = %d [%-5p] (%c.%t): %m%n

3.测试代码如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggerTest {private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);public static void main(String[] args) {logger.info("Current Time: {}", System.currentTimeMillis());logger.info("Current Time: " + System.currentTimeMillis());logger.info("Current Time: {}", System.currentTimeMillis());logger.trace("trace log");logger.warn("warn log");logger.debug("debug log");logger.info("info log");logger.error("error log");}
}

 4.更换日志系统

看到这里,你可能会有疑问:既然都用了log4j,为什么还要用SLF4J来写记录日志的代码呢,不是多此一举吗?

答案是否定的。因为slf4j是一个门面,log4j是里子,一个slf4j可以搭配不同的里子以实现不同的效果。假设我们不再需要log4j,而是希望改为使用java自带logging记录日志,我们需要做的仅仅是将pom.xml的依赖项slf4j-log4j12改为slf4j-jdk14即可,无需对上述测试代码做任何修改。

转载于:https://www.cnblogs.com/xiaoao/p/9774644.html

slf4j日志门面担当相关推荐

  1. Spring Boot SLF4J日志实例

    From: https://blog.csdn.net/lxh18682851338/article/details/78560295 默认情况下,SLF4j日志记录包含在Spring Boot We ...

  2. springboot 打印slf4_SpringBoot 整合 slf4j 日志打印

    划水时间,记录一下用到的相关slf4j 日志打印,如何实现配置输出.本地保存log日志文件... 我使用的是SpringBoot框架,slf4j 类库已经包含到了 SpringBoot 框架中,所有, ...

  3. slf4j没有在linux中生成日志,slf4j日志记录问题 - 未生成日志文件

    我正在使用slf4j通过java实用程序日志记录.我试图放置logging.properties文件,以便它会被我的web应用程序拾取.以下是我的logging.properties文件怎么样子:sl ...

  4. java slf4j日志级别_SLF4J日志级别以及使用场景

    为什么要使用日志 在项目开发的过程中, 添加合适的日志是一个必不可少的过程,给程序添加合适的日志有以下两个好处. 可以通过查看日志的输出,了解程序的运行状况,判断程序是否按预期进行运行. 程序出现bu ...

  5. springboot开启debug日志_Spring Boot SLF4J日志实例(五十)

    默认情况下,SLF4j日志记录包含在Spring Boot Web应用程序中,只需要启用它就可以了. 注意:查看此Spring Boot Logback XML模板以了解默认的日志记录模式和配置. S ...

  6. SLF4J 日志门面

    文章目录 01.简单介绍 02.日志级别 03.入门案例 03.动态打印 04.异常打印 05.日志集成 06.集成 logback 07.集成 slf4j-nop 08.集成 log4j 09.集成 ...

  7. Java日志框架 -- SLF4J日志门面(入门案例、SLF4J优点、SLF4J日志绑定、SL4J桥接旧的日志框架)

    1. SLF4J日志门面 JCL日志门面逐渐被淘汰了,因为他无法动态的扩展具体的日志实现框架. 简单日志门面(Simple Logging Facade For Java) SLF4J主要是为了给Ja ...

  8. slf4j 日志监控

    问题描述 监控系统 新系统起步,旨在监控原有系统的各种问题.主要的一部分,就是监视原有系统的日志. 日志,是Java企业级应用开发必不可少的一部分,市场上有诸多日志框架.我们选用slf4j. 日志有以 ...

  9. java slf4j日志框架_SLF4J - 日志框架 - 类库 - Java - 代码树

    JAVA简易日志门面(Simple Logging Facade for Java,缩写SLF4J),是一套包装Logging 框架的界面程式,以外观模式实现.可以在软件部署的时候决定要使用的 Log ...

  10. SpringBoot里slf4j日志功能的默认实现

    本文是这篇教程的学习笔记: https://www.springboottutorial.com/logging-with-spring-boot-logback-slf4j-and-log4j 我有 ...

最新文章

  1. 通过PHP前端后台交互/通过ajax前端后台交互/php基础传输数据应用/简单的留言版/简单的注册账户/简单的登录页/...
  2. [清华集训2016]石家庄的工人阶级队伍比较坚强——三进制FWT
  3. Spring_总结_02_依赖注入
  4. RocketMQ介绍与云服务器安装
  5. laravel 在nginx服务器上除了首页其余都是404的问题
  6. 缺省参数-指定函数缺省参数的默认值
  7. Visual Editor插件下载、安装问题(Eclipse3.1.1)
  8. 数的划分(信息学奥赛一本通-T1304)
  9. 单片机c语言如何精确延时,单片机C语言精确延时值的计算
  10. 基于php的人力资源管理系统,基于thinkPHP框架的人力资源管理系统
  11. springboot基于微信小程序的校园体育运动场地及器材租凭系统设计与实现毕业设计源码131052
  12. java 接口 实验报告_java-接口练习实验报告
  13. Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by se
  14. 解决:ipad QQ可以联网,浏览器不能联网
  15. win10 系统更新服务器出错怎么办,解决更新win10系统出现错误提示“0x800f081f”的方法...
  16. 第六章 彩色图像处理
  17. 二叉树非递归后序遍历的三种办法
  18. python交换机ssh巡检_paramiko交换机巡检
  19. Camunda入门(四) - 流程应用(支付流程)入门示例
  20. 计算机网络的标准化工作与相关组织

热门文章

  1. 9、recoil库的基本使用
  2. 服务器vga接显示器无信号,显示器用HDMI转VGA接口后,无信号怎么解决
  3. Error inflating class androidx.constraintlayout.widget.ConstraintLayout
  4. PowerPoint超链接字体颜色修改、怎么去掉超链接下划线
  5. 利用重力加速度传感器,获取芯片相对水平位置的角度
  6. 常用传感器讲解二十一--加速度传感器(ADXL335)
  7. android x86_646,雷电模拟器4.0x86_64位版本即android 7.1 xposed安装
  8. Unity3dC#分布式游戏服务器ET框架介绍-组件式设计
  9. 你想要的虚幻UE游戏人物模型素材都在这里,细致又齐全
  10. android酒店点餐系统设计,基于安卓Android酒店点餐系统APP的设计与实现(MySQL)(含录像)...