用slf4j统一管理日志总结

参考网页:http://www.slf4j.org/

一.使用slf4j统一管理并配置统一使用log4j日志

使用的jar:(slf4j-api-1.7.5.jar,jcl-over-slf4j-1.7.5.jar,jul-to-slf4j-1.7.5.jar,slf4j-log4j12-1.7.5.jar,log4j-1.2.12.jar)

因为项目中多个框架使用不同的日志或者现在修改以前项目中的日志框架改用另一种日志,所以使用slf4j统一管理日志会比较方便。

1.slf4j是一个接口标准。

2.jcl-over-slf4j-1.7.5.jar,jul-to-slf4j-1.7.5.jar是将以前jcl jul日志桥接到slf4j上并由slf4j管理。

备注:对于jul-to-slf4j-1.7.5.jar的使用应该在application初始化时加入代码(移除之前存在的handle,安装SLF4JBridgeHandler):
       SLF4JBridgeHandler.removeHandlersForRootLogger();
        SLF4JBridgeHandler.install();

3.slf4j-log4j12-1.7.5.jar是slf4j接口的实现,是一个slf4j到log4j的转换层,将以slf4j的管理的日志转为log4j

4.log4j-1.2.12.jar是log4j日志的jar

5.然后配置一个log4j的配置文件:log4j.properties

#将等级为INFO的日志信息输出到File(名字任意与定义时保持一致即可)目的地

#可以填写多个目的地

#等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL(优先级依次递减)

log4j.rootLogger =INFO,File

#此为hibernate的包中类的等级,以及选择其信息输出端(可选的输出端要定义)

#log4j.logger.org.hibernate.tool.hbm2ddl=INFO,File

#log4j.logger.org.hibernate.jdbc=DEBUG,File

log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE,File

#log4j.logger.org.hibernate.type.descriptor.sql.BasicExtractor=DEBUG,File

log4j.logger.org.hibernate.SQL=TRACE,File

# log4j.additivity.bao.leiming=false是log只打印到本log的输出端中

#不再打印到其父logger的输出端,防止日志信息打印多次

log4j.additivity.org.hibernate.SQL=false

#log4j.logger.org.hibernate.engine.QueryParameters=TRACE,File

#log4j.logger.org.hibernate.engine.query.HQLQueryPlan=DEBUG,File

log4j.additivity.org.hibernate.type.descriptor.sql.BasicBinder=false

#定义名为File(名字可以任意)的日志输出端的类型此为每天产生一个日志

log4j.appender.File=org.apache.log4j.DailyRollingFileAppender

#定义名为File的输出端文件名

log4j.appender.File.file =c:/logs/tomcat.

log4j.appender.File.encoding =UTF-8

log4j.appender.File.datePattern =‘.‘yyyy-MM-dd‘.log‘

#定义名为File的输出端的layout的类型,此处PatternLayout为可以灵活的指定布局模式

log4j.appender.File.layout =org.apache.log4j.PatternLayout

#使用PatternLayout,此处要指定打印信息的具体格式

log4j.appender.File.layout.conversionPattern=%d[%t]%-5p%c-%m%n

log4j.appender.File.append =true

#与上述雷同,此处为定义名为stdout的日志输出端类型

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss,SSS}[%c]-[%p]%m%n

这样就可以在在项目中使用slf4j统一的接口写日志了(假设在名为Aa类)

//logger的名字见配置文件,如果没有就继承父,如果没父就继承rootLogger

final Logger logger = LoggerFactory.getLogger("logger的名字");

logger.debug("Thisis debug message");

logger.info("This is infomessage");

logger.warn("This is warnmessage");

logger.error("This is errormessage");

即使以后跟换日志框架(例如不使用log4j而改使用logback)都很方便。

举例:原先项目使用slf4j统一管理使用log4j而现在改使用logback

步骤:

1、删除log4j-1.2.12.jar、slf4j-log4j12-1.7.5.jar

2、删除配置文件log4j.properties

3、导入jar包:log4j-over-slf4j-1.7.5.jar、logback-access-1.0.13.jar、logback-classic-1.0.13.jar、logback-core-1.0.13.jar

4、增加logback-1.0.13配置文件logback.xml

即可

不需要修改项目之前的代码,只要更换jar包和相应日志的配置文件即可

重新回顾一遍。2016年12月15号

补充参考网址:

http://phl.iteye.com/blog/2021461

http://www.tuicool.com/articles/IfeUfq

http://blog.csdn.NET/xianymo/article/details/51026663

时间: 12-22

用slf4j统一管理日志总结的相关文章

玩转mongodb(九):通过log4jmongo来实现分布式系统的日志统一管理

背景 在分布式系统中,我们有多个web app,这些web app可能分别部署在不同的物理服务器上,并且有各自的日志输出.当生产问题来临时,很多时候都需要去各个日志文件中查找可能的异常,相当耗费人力.日志存储多以文本文件形式存在,当有需求需要对日志进行分析挖掘时,这个处理起来也是诸多不便,而且效率低下. 为了方便对这些日志进行统一管理和分析,我们可以将日志统一输出到指定的数据库系统中,再由日志分析系统去管理.由于这里是mongodb的篇章,所以主观上以mongodb来做日志数据存储:客观上,一是

Android开发日志统一管理

在开发中,我们通常要对日志的输出做统一管理,下面就为大家推荐一个日志输出类,在开发阶段只需将DEBUG常量设为true,生产环境将DEBUG设为false即可控制日志的输出.啥都不说了,需要的朋友直接带走. package com.android.util; /** * 日志输出统一管理 * * @author 祁连山 * @date 2015-04-27 * @version 1.0 * */ public class Log { private static final String TAG

SLF4J - 借助SLF4J, 统一适配所有日志实现为logback日志实现的实践

一.屏蔽各种日志实现,去掉各种日志实现的实现依赖 二.引入slf4j和各种日志实现的适配器 1.引入slf4j 2.引入各种日志实现的适配器(适配到slf4j) 3.引入logback 引入logback的依赖 配置logback的配置文件 三.使用slf4j记录日志 1.使用slf4j记录日志 定义slf4j的logger 记录日志 四.附录 1.实际引入的jar包 antlr/antlr/2.7.7/83cd2cd674a217ade95a4bb83a8a14f351f48bd0/antlr

安装syslog-ng管理日志

安装了syslog-ng统一管理服务器日志,安装方法是网上找的,现在有些问题需要解决: 1.日志服务器可以同步日子,但是由于要自定义管理想要的日志文件,一直不能同步到服务器,现在贴出配置文档,希望可以交流学习. 安装syslog-ng service 端安装: yum install gcc* cd /usr/src wget http://www.balabit.com/downloads/files/syslog-ng/sources/3.2.4/source/eventlog_0.2.12

软硬兼施统一管理 瑞星携手江西民政打造整体安保方案

近年来,随着政府信息化进程的不断加快,电子政务系统现在已经逐渐成为了国家信息化建设中不可或缺的环节,深入应用到了各级政府之中.但与此同时,病毒传播.木马窃密.网络攻击等网络违法犯罪活动也在日益猖獗,网络安全威胁不断推陈出新,也给各级政府维护网络安全带来了严峻的挑战.试想,在政府信息化网络中存在着众多流转的政府公文,其中不乏重要的资料和情报,这些信息通过网络传送时如果被窃取.篡改和伪造,对国家安全和利益带来的严重后果将不堪设想.那么,面对日益严峻复杂的网络安全形势,各级政府应该如何有效防止黑客攻击

巧用CurrentThread.Name来统一标识日志记录

先看下面的日志: 2017/5/21 18:00:01 [OrderQuery_180001914_C72FF]请求支付中心参数:{"order_no":"KB201705210000165","sign":"e6c3559cd4b36458b180f15bfcd9b5a5"} 2017/5/21 18:00:01 [OrderQuery_180001914_C72FF]支付中心验签通过. 2017/5/21 18:00:01

commons-logging和slf4j都是日志的接口

过上面的图,可以简单的理清关系! commons-logging和slf4j都是日志的接口,供用户使用,而没有提供实现! log4j,logback等等才是日志的真正实现. 当我们调用接口时,接口的工厂会自动寻找恰当的实现,返回一个实现的实例给我服务.这些过程都是透明化的,用户不需要进行任何操作! 这里有个小故事,当年Apache说服log4j以及其他的日志来按照commons-logging的标准编写,但是由于commons-logging的类加载有点问题,实现起来也不友好,因此log4j的作

Android Studio中Gradle统一管理版本号引用配置

Gradle统一管理版本号引用配置 为了提高项目开发效率,在实际项目开发过程中往往会引入一些开源框架,还有项目中使用的各种module,moudle过多时最好提供一种统一的方式去管理版本号,如:compileSdkVersion.buildToolsVersion.androidTestCompile 等,便于日后对版本号进行维护,此处记录2种方式处理上述问题. 方式一 1.在项目根目录下创建.gradle文件,如:config.gradle 2.在根目录下的build.gradle文件中引入我

域环境下利用组策略实现统一管理

域环境下利用组策略实现统一管理 1)   组策略配置 准备工作: 域控---新建---组织单位 Network 添加账户hansongwei 新建组策略对象 注:win 2003与win 2008 的区别 Win 2003[管理工具][Directory Active 用户和计算机]选择整个域或者某个组织单位,右键单击,[属性]---[组策略] Win2008  [管理工具][组策略管理] 本实例以win 2003为例 新建---组策略对象 networkGPO 编辑 networkGPO 做相