SLF4J官网:http://www.slf4j.org/

SLF4J的作用通俗点讲,就是可以让我们的项目以最小的代价更换不同的日志系统。无需修改代码,只需要添加、删除相应的jar包和配置文件。

1.添加”slf4j-api-xxx.jar”到项目中。(xxx代表版本号,本文用的是1.7.7版本)

2.建个项目,编写几句简单的日志记录的代码。

//import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class test_slf4j { public static void main(String[] args) {
// PropertyConfigurator.configure("log4j.properties");
Logger logger = LoggerFactory.getLogger(test_slf4j.class);
logger.trace("I'm trace log.");
logger.debug("I'm debug log.");
logger.info("I'm info log.");
logger.warn("I'm warn log.");
logger.error("I'm error log.");
}
}

3.下载的SLF4J压缩包里自带了很多的日志系统,体验一下几个常用的。

【Simple】

先来用一下简单日志,添加”slf4j-simple-xxx.jar”到项目中。

然后直接运行上面的代码,控制台输出结果:

[main] INFO test_slf4j - I'm info log.
[main] WARN test_slf4j - I'm warn log.
[main] ERROR test_slf4j - I'm error log.

貌似因为没有自定义配置文件,默认配置把trace和debug级别的日志给过滤了。

【JDK】

再来试试jdk自带的日志系统,删除”slf4j-simple-xxx.jar”,添加”slf4j-jdk14-xxx.jar”到项目中。

注意:项目中不能有多个日志系统,否则SLF4J因为不知道用哪个会报错。

然后直接运行上面的代码,控制台输出结果:

八月 30, 2014 12:44:12 下午 test_slf4j main
信息: I'm info log.
八月 30, 2014 12:44:13 下午 test_slf4j main
警告: I'm warn log.
八月 30, 2014 12:44:13 下午 test_slf4j main
严重: I'm error log.

结果和简单日志差不多,除了日志格式不同,多了日志记录时间,也是被过滤了trace和debug级别的日志。

【Log4j】

上面的日志内容实在是过于简单,对我们实际开发可以说是作用甚微。日志文件当然是越详细越好,尤其是在修复BUG时,能够准确的定位到哪一行代码是极好的。

来试一下大家常用的Log4j,删除其他日志系统的jar包,添加”slf4j-log4j12-xxx.jar”,还需添加一个Log4j1.2版本的jar包,去Log4j的官网上下载一个。现在Log4j1已经停止更新,Log4j2说是比1提升非常多。我一开始用SLF4J + Log4j2,但是一直不成功。网上的资料也不多,等回头有时间研究一下再写一篇SLF4J + Log4j2的文章,这里我用的是SLF4J-1.7.7 + Log4j-1.2.17。

添加了需要的jar包,还需添加Log4j的配置文件”log4j.properties”。

我配置的log4j.properties具有三种Logger。

Console:控制台输出DEBUG级别以上的日志。

LogFile:文本记录INFO级别以上的日志,文件最大不超过2MB。

ErrorFile:文件记录ERROR级别以上的日志,以日期格式命名文件,如“error.log.2014-08-01”、“error.log.2014-08-02”。

# Set log levels #
log4j.rootLogger = DEBUG, Console, LogFile, ErrorFile # Output the log info to the Java Console #
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target = System.out
log4j.appender.Console.Threshold = DEBUG
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = <%-d{yyyy-MM-dd HH:mm:ss}> <%t> %l %n<%p> %m%n%n # Save the log info to the log file #
log4j.appender.LogFile = org.apache.log4j.RollingFileAppender
log4j.appender.LogFile.File = logs/log.log
log4j.appender.LogFile.Append = true
log4j.appender.LogFile.MaxFileSize = 2MB
log4j.appender.LogFile.MaxBackupIndex = 100
log4j.appender.LogFile.Threshold = INFO
log4j.appender.LogFile.layout = org.apache.log4j.PatternLayout
log4j.appender.LogFile.layout.ConversionPattern = <%-d{yyyy-MM-dd HH:mm:ss}> <%t> %l %n<%p> %m%n%n # Save the error info to the error file. A file one day. #
log4j.appender.ErrorFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ErrorFile.File = logs/error.log
log4j.appender.ErrorFile.Append = true
log4j.appender.ErrorFile.Threshold = ERROR
log4j.appender.ErrorFile.layout = org.apache.log4j.PatternLayout
log4j.appender.ErrorFile.layout.ConversionPattern = <%-d{yyyy-MM-dd HH\:mm\:ss}> <%t> %l %n<%p> %m%n%n

在src根目录下创建“log4j.properties”,Log4j在启动时会默认寻找这个配置文件。如果你将配置文件放在其他地方,可以用上面注释掉的代码先加载指定的配置文件,支持绝对路径和相对路径。

还是直接运行上面的代码,控制台输出结果:

<2014-08-30 13:17:03> <main> test_slf4j.main(test_slf4j.java:17)
<DEBUG> I'm debug log. <2014-08-30 13:17:03> <main> test_slf4j.main(test_slf4j.java:18)
<INFO> I'm info log. <2014-08-30 13:17:03> <main> test_slf4j.main(test_slf4j.java:19)
<WARN> I'm warn log. <2014-08-30 13:17:03> <main> test_slf4j.main(test_slf4j.java:20)
<ERROR> I'm error log.

我配置的log4j.rootLogger = DEBUG,所以trace没有被输出。去查看两个日志文件,也成功记录了相应的日志。

SLF4J日志门面的更多相关文章

  1. SLF4J 日志门面

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

  2. Log4j2日志框架集成Slf4j日志门面

    1.说明 本文介绍使用日志门面Slf4j打印日志, 底层日志实现使用Log4j2框架, 方便以后切换底层日志实现, Log4j2可以替换成Logback等. 2.依赖管理 在pom.xml依赖管理中导 ...

  3. catalina.out日志膨胀问题解决实例,日志门面commons-logging的实践

    声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 笔者在公司的时候,遇到一个问题,2个模块A.B Tomcat中的catalina.out及catalina ...

  4. SLF4J 简单日志门面 介绍和使用

    参考:http://singleant.iteye.com/blog/934593        http://liuzidong.iteye.com/blog/776072 介绍: 简单日记门面(s ...

  5. springboot结合日志门面SLF4j和日志实现Logback的使用

    一.此处主要介绍在springboot工程下如何使用 logback + slf4j  进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在 ...

  6. slf4j日志的使用

    slf4j(simple logging facade for Java)是Java的简单的日志门面,它不是具体的日志解决方案,它只服务于各种各样slf4j-logo的日志系统.这里的slf4j-lo ...

  7. Log4j,Log4j2,logback,slf4j日志学习

    日志学习笔记 Log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条 ...

  8. Log4j,Log4j2,logback,slf4j日志学习(转)

    日志学习笔记Log4jLog4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条日志 ...

  9. 日志系列1——slf4j日志框架原理

    目录 1.前言 2.日志门面 3.日志库 4.日志适配器 5.日志库的选用 6.logback.xml 配置文件 1.前言 ​ 说到日志工具,日常工作或学习中肯定听过这些名词:log4j.logbac ...

随机推荐

  1. echart 图表 在.net中生成图片的方法

    经过中午近两个小时的努力,终于可以实现了:echart 图表 在.net中生成图片 以下源代码: 前台页面: <!DOCTYPE html><html><head> ...

  2. Sqlserver中存储过程,触发器,自定义函数(二)

    Sqlserver中存储过程,触发器,自定义函数: 自定义函数:1.函数类型:2.函数的参数和返回值: 1.函数类型:标量值函数,返回的是一个标量值表值函数:内联表值函数:多语句表值函数. 标量值函数 ...

  3. 使用jaxp对比xml进行DOM解析

    /*DOM解析编程 •遍历所有节点 •查找某一个节点 •删除结点 •更新结点 •添加节点 /* package cn.itcast.jaxp; import java.io.File; import ...

  4. 页面设计--RadioButton

    RadioButton单选控件支持多分组模式 属性如下图 设计: web显示效果图:

  5. linux mint konsole终端模拟器 字符之间空格

    最近安装了linux mint 发现里面的终端是:konsole终端模拟器 ,问题是每次输字符随着输入字符越来越多,字符与光标之间的距离也越来越大(看上去像是自动添加了空格一样), 同时在使用vi时, ...

  6. MFC中,如何自定义用户消息

    1.用处 在多个类之间传递消息.当需要响应用户操作,本类却无法实现时,可以向系统发出消息.然后让系统中的需要的位置实现它. 2.方法 2.1定义这个消息,并让拥有者发送这个这个消息,传递一个整型参数 ...

  7. Android开发-API指南-设备兼容性

    Device Compatibility 英文原文:http://developer.android.com/guide/practices/compatibility.html 采集日期:2014- ...

  8. 阿里云搭建LAMP环境详细教程

    一.云服务器的选择 随着大数据时代的到来,为了满足更为复杂的运算和用户更为苛刻的需求,云计算应运而生,随之而来的就是云服务器.过去的服务器成本较高,运算模式较为单一,资源利用率不高,而云服务器的出现刚 ...

  9. 慕课网-安卓工程师初养成-3-8 Java中的条件运算符

    来源:http://www.imooc.com/code/1306 条件运算符( ? : )也称为 “三元运算符”. 语法形式:布尔表达式 ? 表达式1 :表达式2 运算过程:如果布尔表达式的值为 t ...

  10. web调试技巧

    接触web不久,遇到了一些"奇怪"的问题,现将一些调试技巧总结如下:    1.欲添加某一样式,点击右键,查看源码    2.样式有问题,点击右键,审查元素 当然,还有一些经验总结 ...