本文主要是介绍slf4j+log4j和slf4j+logback…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原文地址:slf4j+log4j和slf4j+logback(转载) 作者:java_coffee豆
1.slf4j+log4j
使用log4j做为底层日志工具,需要三个架包:
log4j-1.2.xx.jar
slf4j-api-x.x.x.jar
slf4j-log4j12-x.x.x.jar
下载地址:
http://logging.apache.org/log4j/1.2/download.html
http://www.slf4j.org/download.html
在工程的src根目录下创建log4j.properties文件(名字是固定的,这是初始化类文件中固定的名称和路径)
这个是一个资源配置文件,指定固定的key和value进行配置。基本格式如下:
#1.配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
其中这里也可以用rootCategory进行配置,因为Logger是Category的一个子类。
#2.配置日志信息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
Appender 为日志输出目的地,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
Layout:日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
其中这里可以用该类的大写首字母来简写使用。
以下是一个完整的log4j.properties
log4j.rootCategory=error, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p : %c(%L) -> %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=/home/httpd/html/gameStatistics/log/stats.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p : %c(%L) -> %m%n
log4j.logger.org.apache.commons=error
log4j.logger.com.danga.MemCached.MemCachedClient=ERROR
其中R,代表RollingFileAppender,指定文件大小到达指定尺寸的时候产生一个新的日志文件,R.File配置了文件路径和名称,R.layout使日志以指定布局模式输出,
R.layout.ConversionPattern采用类似C语言中的printf函数的打印格式格式化日志信息;
log4j.logger.com.danga.MemCached.MemCachedClient=ERROR,指单独设置memcached日志级别
2.slf4j+logback(另一个日志机制)
Logback和log4j是非常相似的,Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小。
搭建logback需要3个架包:
logback-classic-0.9.21.jar(目前已经有1.0.0)
logback-core-0.9.21.jar(目前已经有1.0.0)
slf4j-api-1.6.x.jar
下载地址:
http://logback.qos.ch/download.html
http://www.slf4j.org/download.html
在工程的src根目录下创建logback.xml文件(名字是固定的)
这里logback有一个专门用来读取logback.xml的机制,logback框架初始化时,会调用类文件来读取logback.xml文件,若是没有找到,则调用默认设备文件,按照默认设备文件进行设备。
以下是一个完整的logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义时间戳-->
<timestamp key="byDay" datePattern="yyyy-MM-dd"/>
<!--定义指定文件名称的输出-->
<appender name="RootFileAppender" class="ch.qos.logback.core.FileAppender">
<!--此处设定的文件名称是动态设置的 即每天生成一个文件用于记录当天的文件信息-->
<file>/home/httpd/html/gameStatistics/log/stats-${byDay}.log</file>
<append>true</append>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss}, %p, %c, %t, %F, %L, %C{1}, %M %m%n</pattern>
</layout>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<!--过滤器指定该类的日志级别-->
</appender>
<!--定义控制台输出-->
<appender name="RootConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss}, %p, %c, %t, %F, %L, %C{1}, %M %m%n</pattern>
</layout>
</appender>
<!-- 设置根 的日志级别,根元素是配置文件的入口-->
<root>
<level value="error"/>
<appender-ref ref="RootFileAppender"/> <!-- 配置对RootFileAppender的引用-->
<appender-ref ref="RootConsoleAppender"/> <!-- 配置对RootConsoleAppender的引用-->
</root>
</configuration>
其中设置指定的某个类的日志等级
<logger name="com.danga.MemCached.MemCachedClient">
<level value="error" />
</logger>
除了指定周期分日志文件,logback还可以指定大小分日志文件,这里引用是RollingFileAppender
<appender name="RootFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/httpd/html/gameStatistics/log/stats.log</file>
<append>true</append>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy ">
<fileNamePattern>/home/httpd/html/gameStatistics/log/stats.log.%i</fileNamePattern>
使用log4j做为底层日志工具,需要三个架包:
log4j-1.2.xx.jar
slf4j-api-x.x.x.jar
slf4j-log4j12-x.x.x.jar
下载地址:
http://logging.apache.org/log4j/1.2/download.html
http://www.slf4j.org/download.html
在工程的src根目录下创建log4j.properties文件(名字是固定的,这是初始化类文件中固定的名称和路径)
这个是一个资源配置文件,指定固定的key和value进行配置。基本格式如下:
#1.配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
其中这里也可以用rootCategory进行配置,因为Logger是Category的一个子类。
#2.配置日志信息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
Appender 为日志输出目的地,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
Layout:日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
其中这里可以用该类的大写首字母来简写使用。
以下是一个完整的log4j.properties
log4j.rootCategory=error, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p : %c(%L) -> %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=/home/httpd/html/gameStatistics/log/stats.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p : %c(%L) -> %m%n
log4j.logger.org.apache.commons=error
log4j.logger.com.danga.MemCached.MemCachedClient=ERROR
其中R,代表RollingFileAppender,指定文件大小到达指定尺寸的时候产生一个新的日志文件,R.File配置了文件路径和名称,R.layout使日志以指定布局模式输出,
R.layout.ConversionPattern采用类似C语言中的printf函数的打印格式格式化日志信息;
log4j.logger.com.danga.MemCached.MemCachedClient=ERROR,指单独设置memcached日志级别
2.slf4j+logback(另一个日志机制)
Logback和log4j是非常相似的,Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小。
搭建logback需要3个架包:
logback-classic-0.9.21.jar(目前已经有1.0.0)
logback-core-0.9.21.jar(目前已经有1.0.0)
slf4j-api-1.6.x.jar
下载地址:
http://logback.qos.ch/download.html
http://www.slf4j.org/download.html
在工程的src根目录下创建logback.xml文件(名字是固定的)
这里logback有一个专门用来读取logback.xml的机制,logback框架初始化时,会调用类文件来读取logback.xml文件,若是没有找到,则调用默认设备文件,按照默认设备文件进行设备。
以下是一个完整的logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
其中设置指定的某个类的日志等级
<logger name="com.danga.MemCached.MemCachedClient">
</logger>
除了指定周期分日志文件,logback还可以指定大小分日志文件,这里引用是RollingFileAppender