SLF4J日志门面

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没有被输出。去查看两个日志文件,也成功记录了相应的日志。

时间: 2024-10-11 01:16:31

SLF4J日志门面的相关文章

日志门面框架Slf4j

SLF4J的使用简单日志门面(Simple Logging Facade For Java) SLF4J主要是为了给Java日志访问提供一套标准.规范的API框架,其主要意义在于提供接口,具体的实现可以交由其他日志框架,例如log4j和logback等.当然slf4j自己也提供了功能较为简单的实现,但是一般很少用到.对于一般的Java项目而言,日志框架会选择slf4j-api作为门面,配上具体的实现框架(log4j.logback等),中间使用桥接器完成桥接.官方网站: https://www.

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

参考:http://singleant.iteye.com/blog/934593        http://liuzidong.iteye.com/blog/776072 介绍: 简单日记门面(simple logging Facade for java)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现. Logging API实现既可以选择直接实现SLF4J接的loging APIs如: NLOG4J.

slf4j日志的使用

slf4j(simple logging facade for Java)是Java的简单的日志门面,它不是具体的日志解决方案,它只服务于各种各样slf4j-logo的日志系统.这里的slf4j-logo可以是log4j,可以是jdk的日志,可以是logback,还可以是slf4j-simple等等.按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统.这里其实用到了一种设计模式(Facade设计模式,门面设计模式).如下图: 实际上,

slf4j日志系统

slf4j SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统. 允许最终用户在部署其应用时使用其所希望的日志系统. 2.如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式.记录级别.输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统. 如果你开发的是类库或者嵌入式组件,那么就应该考虑采用SLF4J,因为不

Log4j,Log4j2,logback,slf4j日志学习

日志学习笔记 Log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程. Log4j有7种不同的log级别,按照等级从低到高依次为:TRACE.DEBUG.INFO.WARN.ERROR.FATAL.OFF.如果配置为OFF级别,表示关闭log. Log4j支持两种格式的配置文件:properties和xml.包含三

SpringBoot 整合 slf4j 日志打印

划水时间,记录一下用到的相关slf4j 日志打印,如何实现配置输出.本地保存log日志文件... 我使用的是SpringBoot框架,slf4j 类库已经包含到了 SpringBoot 框架中,所有,所有前提是“你的SpringBoot项目能够启动起来” /手动滑稽... 第一步:在 application.properties 文件中先定义好logger文件的一些配置信息,这样方便以后修改配置: ###################### log 配置 ###################

slf4j简单日志门面与各种日志系统

SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现. 准确的说,slf4j并不是一种具体的日志系统,而是一个用户日志系统的facade,允许用户在部署最终应用时方便的变更其日志系统.在系统开发中,统一按照slf4j的API进行开发,在部署时,选择不同的日志系统包,即可自动转换到不同的日志系统上.比如:选择JDK自带的日志系统,则只需要将slf4j-api-1.5.10.jar和slf4j-jdk14-1.5.1

slf4j日志只输出到控制台,没输出到日志文件

最近使用SLF4J遇到了一个比较头疼的坑,日志输出到控制台没有问题,但是始终没有输出到日志文件.无论怎麽修改日志配置,始终是老样子. 有一种绝望,是各种百度.google却还是解决不了问题..直到我在启动项目的时候发现了这样的提示, SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/E:/Java/tp-wechat/webapps/wechat-hy/WEB-INF/lib

Hibernate学习:slf4j日志框架

一:首先来看一个图 commons-logging和slf4j都是日志的接口,供用户使用,而没有提供实现!后面的log4j,slf4j-nop等才是他们的实现. 二:Hibernate框架的slf4j-api-1.5.8.jar Hibernate默认用的是slf4j-nop.jar日志实现方式. 但是我们可以替换成log4j的实现.但不是简单的加上log4j-1.2.17.jar就行了.中间还需要一个转换器slf4j-log4j12-1.5.8.jar 然后在src目录下加上log4j.pro