`
月迷津渡
  • 浏览: 102197 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

日志系统解惑

    博客分类:
  • Java
 
阅读更多

 

1、  简介

SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

2、  什么情况下使用

如果你开发的是类库或者嵌入式组件,那么就应该考虑采用SLF4J,因为不可能影响最终用户选择哪种日志系统。在另一方面,如果是一个简单或者独立的应用,确定只有一种日志系统,那么就没有使用SLF4J的必要。假设你打算将你使用log4j的产品卖给要求使用JDK 1.4 Logging的用户时,面对成千上万的log4j调用的修改,相信这绝对不是一件轻松的事情。但是如果开始便使用SLF4J,那么这种转换将是非常轻松的事情

3、  源码及jar包下载地址

http://www.slf4j.org/download.html

4、  调用举例

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class Wombat {

   final Logger logger = LoggerFactory.getLogger(Wombat.class);

   Integer t;

   Integer oldT;

   public void setTemperature(Integer temperature) {

             oldT = t;

             t = temperature;

             Object[] objs = {new java.util.Date(), oldT, t};

             logger.info("Today is {}, Temperature set to {}. Old temperature was {}.", objs);

             if (temperature.intValue() > 50) {

                      logger.warn("Temperature({}) has risen above 50 degrees.", t);

             }

   }

   public static void main(String[] args) {

             Wombat wombat = new Wombat();

             wombat.setTemperature(10);

             wombat.setTemperature(60);

   }

}

5、  日志绑定原理

在应用中,通过LoggerFactory类的静态getLogger()获取logger。通过查看该类的代码可以看出,最终是通过StaticLoggerBinder.SINGLETON.getLoggerFactory()方法获取LoggerFactory然后,在通过该具体的LoggerFactory来获取logger的。类org.slf4j.impl.StaticLoggerBinder并不在slf4j-api-1.*.*.jar包中,仔细查看每个与具体日志系统对应的jar包,就会发现,相应的jar包都有一个org.slf4j.impl.StaticLoggerBinder的实现,不同的实现返回与该日志系统对应的LoggerFactory,因此就实现了所谓的静态绑定,达到只要选取不同jar包就能简单灵活配置的目的。

6、  日志系统的切换

编译上边的程序,需要classpath中加入slf4j-api-1.4.1.jar文件。 
运行时,需要classpath中加上slf4j-simple-1.4.1.jar

切换到jdk14log的风格:只需要把slf4j-simple-1.4.1.jarclasspath中移除,同时classpath中加入slj4j-jdk14-1.4.1.jar

切换到log4j:同样移除slj4j-jdk14-1.4.1.jar,加入slf4j-log4j12-1.4.1.jar,同时加入log4j-1.2.x.jar加入log4j.properties

 

PS:如果不想使用slf4j框架来记log4j日志也是可以的,但是需要使用log4j本身的Logger类和Logger.getLogger()方法。这样就绕过了slf4j框架。只需要引入一个包即可。

对于一般应用程序,从可移植性出发还是推荐使用slf4j进行编译。而对于运行时则选择不同的日志实现框架。

 

分享到:
评论

相关推荐

    问答系统v3.7非常不错的一款ask2在线问答解惑系统网站源码更新日志详细,可以自己搭建起来看看.txt

    问答系统v3.7作为一款优秀的在线问答解惑平台,不仅具备强大的功能集,而且提供了良好的扩展性和可定制化能力。无论是对于个人用户还是企业组织来说,都能够轻松搭建起符合自身需求的问答社区。通过持续跟进官方发布...

    Java解惑 中文版

    通过阅读《Java解惑中文版》,读者不仅可以解答编程中遇到的困惑,还能系统提升自己的Java技术水平,编写出更加健壮、易于维护的程序。无论你是Java新手还是有经验的开发者,这本书都将是你不可或缺的参考资料。

    C++ 日志系统.zip

    本人系统开发经验充足,有任何使用问题欢迎随时与我联系,我会及时为你解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(若有),项目具体内容可查看下方的资源详情。 【附带帮助】: 若还需要相关开发...

    解惑大数据

    在数据采集阶段,Web爬虫、日志收集、传感器数据等手段用于获取数据。数据存储则涉及分布式文件系统,如Hadoop的HDFS,以及NoSQL数据库,如MongoDB、Cassandra,它们能够处理PB级别的大规模数据。处理阶段,...

    基于小根堆实现定时器,利用单例模式与阻塞队列实现异步的日志系统

    基于c++11的轻量级Web并发服务器,使用Epoll与Reactor高并发模型,基于小根堆实现了定时器,利用单例模式与阻塞队列实现异步的日志系统.zip优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松...

    SQL解惑(第2版)

    - 当面对海量数据时,如何优化查询性能,提高系统的响应速度。 - 包括分区技术、分页查询等方法的应用。 3. **故障排查与解决**: - 常见SQL错误的识别与修复。 - 通过日志文件定位问题所在,采取相应的解决...

    电脑应用-答疑解惑

    例如,通过系统日志分析错误,使用系统自带的诊断工具,或者借助第三方软件进行硬件检测。如果问题复杂,不要怕麻烦,寻找专业技术人员帮助是明智的选择。 七、电脑优化与性能提升 随着使用时间的增长,电脑可能会...

    一种具有选课基本功能、可以正常进行基本的选课操作、可以纪录学生选课日志且人机交互良好的单机学生选课系统 .zip

    结合跨平台C++图形用户界面Qt开发框架和MySQL Workbench关系型数据库管理系统,开发一种具有选课基本功能、可以正常进行基本的选课操作、可以纪录学生选课日志且人机交互良好的单机学生选课系统。.zip优质项目,资源...

    SpringBoot集成ELKB+Redis实现分布式实时日志系统实例.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    2014年给某家公司开发一套基于集群的后台日志分析系统,操作系统linux,开发语言

    本人系统开发经验充足,有任何使用问题欢迎随时与我联系,我会及时为你解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(若有),项目具体内容可查看下方的资源详情。 【附带帮助】: 若还需要相关开发...

    一个基于SSM框架的个人日志系统(个人技术博客).zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    linux精彩问答——为你解惑

    8. **系统日志与监控**:理解`/var/log`下的日志文件,以及使用`dmesg`、`journalctl`等查看系统日志,还有性能监控工具如`htop`、`iostat`、`vmstat`的使用。 9. **文本编辑器**:介绍流行的文本编辑器如`vi/vim`...

    智能门锁系统-不仅有普通功能,还有生成每日开锁日志,状态异常监控警报,远程喊话,人员安全标记,信息加密传输等更能保障安全的功能

    智能门锁系统不仅具有远程开锁,远程开关门,设置临时密码,紧急密码等普通功能,还具有生成每日开锁日志,状态异常监控警报,远程喊话,人员安全标记,信息加密传输等更能保障安全的功能。该系统由智能锁设备和手机...

    非常不错的一款问答系统v3.7 ask2在线问答解惑系统网站

    【问答系统v3.7】非常不错的一款ask2在线问答解惑系统网站源码 default默认是百度问答模板 sowenda是高仿360问答的。 soso模板是仿腾讯soso问答界面。 一套wap模板,仿天涯问答的手机版。 pc和wap模板后台设置里自由...

    windows、linux系统web日志痕迹清理工具.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    解惑服务器性能

    2. **性能瓶颈识别**:如何通过日志分析、性能工具定位系统中的性能瓶颈。 3. **源码优化**:通过阅读和修改服务器相关软件的源代码,提升其执行效率。 4. **JVM调优**:如何配置JVM参数以提高Java应用的运行效率,...

    我的Unity框架,包含资源加载,配置加载,数据加载,UI管理,日志管理,动画系统,特效系统.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    远程教育系统 三大框架实现 java

    此外,Spring的AOP功能可以方便地实现日志记录、事务管理等功能,确保系统运行的可靠性和安全性。 其次,Hibernate作为持久层框架,负责处理数据库操作。在远程教育系统中,Hibernate可以方便地映射Java对象到...

    #用于app和linux系统时,日志的收集.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    s2sh远程教育系统

    4. **远程教育系统功能**:该系统可能包含了用户管理、课程管理、在线学习、答疑解惑、考试评估等多个模块。用户可以注册登录,浏览课程信息,观看视频教程,参与论坛讨论,进行在线测试,系统还会根据学习进度和...

Global site tag (gtag.js) - Google Analytics