博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
slf4j日志门面担当
阅读量:5972 次
发布时间:2019-06-19

本文共 1910 字,大约阅读时间需要 6 分钟。

一、简介

    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,输出器loglog4j.rootLogger = info,stdout,log# 输出信息到控制台log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = %d [%-5p] %l %rms: %m%n# 输出DEBUG级别以上的日志到D://logs/debug.loglog4j.appender.log = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.log.DatePattern = '.'yyyy-MM-ddlog4j.appender.log.File = D://debug.loglog4j.appender.log.Encoding = UTF-8#log4j.appender.log.Threshold = INFOlog4j.appender.log.layout = org.apache.log4j.PatternLayoutlog4j.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

你可能感兴趣的文章
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
maya pyside 多个窗口实例 报错 解决
查看>>
我的友情链接
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>
logstash消费阿里云kafka消息
查看>>
unix 环境高级编程
查看>>
MAXIMO 快速查找实现
查看>>
Oracle——条件控制语句
查看>>
第一次作业-准备篇
查看>>
day-6 and day-7:面向对象
查看>>
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
webgl像机世界
查看>>
php正则怎么使用(最全最细致)
查看>>