java开源日志框架
来源:互联网 发布:主流软件开发工具 编辑:程序博客网 时间:2024/06/06 19:00
原文地址http://victorjan.wordpress.com/2010/05/13/java%E6%97%A5%E5%BF%97%E6%A1%86%E6%9E%B6%EF%BC%9Aslf4j%EF%BC%8C-apache-common-logging%EF%BC%8C-log4j%E5%92%8Clogback/
Logback是由log4j创始人设计的又一个开源日记组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日记系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日记的功能。
LOGBack作为一个通用可靠、快速灵活的日志框架,将作为Log4j的替代和SLF4J组成新的日志系统的完整实现。LOGBack声称具有极佳的性能,“ 某些关键操作,比如判定是否记录一条日志语句的操作,其性能得到了显著的提高。这个操作在LogBack中需要3纳秒,而在Log4J中则需要30纳秒。 LogBack创建记录器(logger)的速度也更快:13微秒,而在Log4J中需要23微秒。更重要的是,它获取已存在的记录器只需94纳秒,而 Log4J需要2234纳秒,时间减少到了1/23。跟JUL相比的性能提高也是显著的”。
另外,LOGBack的所有文档是全面免费提供的,不象Log4J那样只提供部分免费文档而需要用户去购买付费文档。
简单日记门面(Facade)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。 Logging API实现既可以选择直接实现SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通过SLF4J提供的API实现来开发相应的适配器如Log4jLoggerAdapter、JDK14LoggerAdapter。
Apache Common-Logging
SLF4J库类似于Apache Common-Logging。但是,他在编译时静态绑定真正的Log库。使用SLF4J时,如果你需要使用某一种日志实现,那么你必须选择正确的SLF4J的jar包的集合。 如此便可以在OSGI中使用了。
Object[] params = {value1, value2, value3};
logger.debug(“first value: {}, second value: {} and third value: {}.”, params);
现在,Hibernate、Jetty、Spring-OSGi、Wicket和MINA等项目都已经迁移到了SLF4J,由此可见SLF4J的影响力不可忽视。
使用CommonLog接口而实际由SLF4J和Log4j实现的过程
1、项目中照常使用
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
编写日志。
2、仍然在src下使用log4j.properties文件进行配置。
3、使用的所有jar文件:
1)log4j-1.2.15.jar 这是log4j的库。 SLF4J并不改变这个底层实现库。
2)slf4j-api-1.5.2.jar 这是SLF4J库。
3)slf4j-log4j12-1.5.2.jar 这包含Log4j的适配器和静态绑定log4j底层实现。
4)jcl-over-slf4j-1.5.2.jar 这提供了Commons-Logging接口,以及使用common-loggin的接口,底层还是由SLF4J来决定哪种实现机制 。
这里,我们需要使用Log4j的原生库,但是不需要Commons-Logging的原生库。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<substitutionProperty name="log.base" value="../logs/hzg" />
<jmxConfigurator />
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger{80} – %msg%n</pattern>
</layout>
</appender>
<!– 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份)–>
<appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${log.base}.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${log.base}.%d{yyyy-MM-dd}.log.zip</FileNamePattern>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>2MB</MaxFileSize>
</triggeringPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger{80} – %msg%n</pattern>
</layout>
</appender>
<!– 需要记录日志的包 –>
<logger name="org.springframework">
<level value="WARN" />
</logger>
<logger name="org.hibernate">
<level value="WARN" />
</logger>
<logger name="org.hibernate.SQL">
<level value="WARN" />
</logger>
<logger name="org.hibernate.cache">
<level value="ERROR" />
</logger>
<root>
<level value="INFO" />
<appender-ref ref="stdout" />
<appender-ref ref="logfile" />
</root>
</configuration>
使用slf4j+logback的优势:
- 支持按文件大小或基于时间的切分方式,可自定义命名模式
- 支持文件打包(触发器方式)
- 支持OSGI环境
如果在单纯的logging环境中,使用SLF4J意义不大。如果想在各种logger API中切换,SELF4J是理想选择,另外在新的项目中,使用SLF4J+Logback是比较好的日志框架选型。
- java开源日志框架
- Java开源日志框架介绍
- 5款Java开源日志框架大比拼
- Java日志框架
- java 常用日志框架
- Java日志框架介绍
- java 日志框架统一
- Java日志框架
- java log4jdbc日志框架
- JAVA日志框架
- JAVA日志框架
- Java日志框架
- Java日志框架
- Java日志框架1
- JAVA日志框架
- java框架学习日志
- JAVA日志框架
- java日志框架学习
- -D
- 常用函数
- VLC 学习计划---文档阅读(转摘)大赞
- 转:多线程编程之pthread_create函数应用
- Android调用系统相机问题
- java开源日志框架
- 国家测绘局制定的测绘与地理信息行业标准统计 (20110706)
- 公钥密码学的理论基础—单向函数
- 关于CopyU!在64位系统下运行的问题
- Android编译中m、mm、mmm 详解
- 集成VS2008命令行编译到.sln文件的右键菜单
- 配置NDK集成开发环境全过程第一版
- VOL版本 Office产品下载地址
- Translation Modeling 学习