- 浏览: 340400 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (212)
- spring (21)
- design pattern(java) (12)
- linux-shell (28)
- java-thread (20)
- java-collection (6)
- java-reflect (9)
- mysql (11)
- java-io (7)
- java-util&lang&io (3)
- algorithm (3)
- interview (2)
- tools-eclipse (2)
- tools-maven (1)
- web-script (1)
- java组建 (13)
- 博客收藏 (1)
- 架构设计与实践 (10)
- active-mq (6)
- java-jvm&性能&原理 (27)
- tomcat (2)
- flume (1)
- serialization (2)
- git (1)
- cache&redis (8)
- guava (1)
- zookeeper (3)
- socket&tcp&udp&http (6)
- test (1)
最新评论
-
bbls:
有用有用有用
java-jvm-jstack-(监视器和锁的概念) -
王新春:
小侠有点帅哦 写道此流怎么关闭新春这个实现 可以不关闭的,哈哈 ...
源码剖析之java.io.ByteArrayOutputStream -
小侠有点帅哦:
此流怎么关闭新春
源码剖析之java.io.ByteArrayOutputStream -
cumt168:
写的很好为什么初始化参数,年轻代-Xmn10M def new ...
jvm之内存申请过程分析 -
ronin47:
应该是跟共享域名思路差不多,根据cookie的key作判断
跨域:一种通过服务端解决跨域的实现
在几乎所有的业务系统中,日志是必不可少的组建,尤其是复杂的业务系统。
java业界有多种优秀log工具可供选择,log4j 和 logback 更是其中翘楚,本文要讲解的是log4j,即使logback更优秀,但是很多老的生产环境的系统,依然在使用log4j~
日志的目标:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。
注意:即使有再好的log工具,也未必能真正的利用好,这更要看使用者对业务场景的熟悉,以记录有效的数据,曾看到在一些项目中,log随意打印了很多无效的数据,或者数据打印不是业务分析的全部数据,这样log打印几乎是没用。
简单说明:通常我们都提供一个名为 log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf/class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可)中定位这个文件,并读入这个文件完成的配置。这个配置文件告诉Log4J以什么样的格式、把什么样的信息、输出到什么地方。
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
Log4J的几个基本核心概念
1、LEVEL日志输出级别:
FATAL 0
ERROR 3
WARN 4
INFO 6
DEBUG 7
2、Appender
Appender 为日志输出目的地,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
org.apache.log4j.FileAppender(文件)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
1)'.'yyyy-MM: 每月
2)'.'yyyy-ww: 每周
3)'.'yyyy-MM-dd: 每天
4)'.'yyyy-MM-dd-a: 每天两次
5)'.'yyyy-MM-dd-HH: 每小时
6)'.'yyyy-MM-dd-HH-mm: 每分钟
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3、Layout
日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
4、ConversionPattern
-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
eg:log4j.appender.infoFile.layout.ConversionPattern = %d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n
5、配置根rootLogger
其语法为:log4j.rootLogger = [ level ] , appenderName, appenderName, …
eg: log4j.rootLogger = INFO,debugFile,infoFile,errorFile,stdout
注意:INFO 此处的配置 为INFO ,即使其他 appender的Threshold的级别为DEBUG,也不会输出。
6、Threshold 自定义输出的日志级别
此处配置的输出级别,一定要高于 根Logger 的配置的日志级别,否则无意义。当让除非你使用第七条规定,重新设定了log的输出级别
7、设置 特定包的级别和目的地
设置com.qunar.log4j包的级别为ERROR级别
log4j.logger.com.qunar.log4j=ERROR
特别注意:此处包级别的设置会覆盖rootLogger的级别设置
设置com.qunar.logback包的输出 到logback Appender
log4j.logger.com.qunar.logback=DEBUG,logback
8、MDC 和 NDC
NDC和MDC是log4j用于存储应用程序的上下文信息(context infomation),从而便于在log中使用这些上下文信息。
NDC采用了一个类似栈的机制来push存储上下文信息,每一个线程都独立地储存上下文信息。比如说一个servlet就可以针对每一个request创建对应的NDC,储存客户端地址等等信息。相关的信息使用NDC.push(message);
在log的时候将信息输出。在相应的PatternLayout中使用”%x”来输出存储的上下文信息
MDC:
MDC内部使用了类似map的机制来存储信息,相对应的方法,MDC.put(key,value);在配置PatternLayout的时候使用:%X{key}来输出对应的value
输出:
07-20 12:00:19.270 ERROR [LogDependencyApi.java:17][www.qunar.com]ndc info 1 ndc info 3 hello xinchun.wang login in~
案例:
8、maven 配置:
java业界有多种优秀log工具可供选择,log4j 和 logback 更是其中翘楚,本文要讲解的是log4j,即使logback更优秀,但是很多老的生产环境的系统,依然在使用log4j~
日志的目标:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。
注意:即使有再好的log工具,也未必能真正的利用好,这更要看使用者对业务场景的熟悉,以记录有效的数据,曾看到在一些项目中,log随意打印了很多无效的数据,或者数据打印不是业务分析的全部数据,这样log打印几乎是没用。
简单说明:通常我们都提供一个名为 log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf/class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可)中定位这个文件,并读入这个文件完成的配置。这个配置文件告诉Log4J以什么样的格式、把什么样的信息、输出到什么地方。
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
Log4J的几个基本核心概念
1、LEVEL日志输出级别:
FATAL 0
ERROR 3
WARN 4
INFO 6
DEBUG 7
2、Appender
Appender 为日志输出目的地,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
org.apache.log4j.FileAppender(文件)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
1)'.'yyyy-MM: 每月
2)'.'yyyy-ww: 每周
3)'.'yyyy-MM-dd: 每天
4)'.'yyyy-MM-dd-a: 每天两次
5)'.'yyyy-MM-dd-HH: 每小时
6)'.'yyyy-MM-dd-HH-mm: 每分钟
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3、Layout
日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
4、ConversionPattern
-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
eg:log4j.appender.infoFile.layout.ConversionPattern = %d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n
5、配置根rootLogger
其语法为:log4j.rootLogger = [ level ] , appenderName, appenderName, …
eg: log4j.rootLogger = INFO,debugFile,infoFile,errorFile,stdout
注意:INFO 此处的配置 为INFO ,即使其他 appender的Threshold的级别为DEBUG,也不会输出。
6、Threshold 自定义输出的日志级别
此处配置的输出级别,一定要高于 根Logger 的配置的日志级别,否则无意义。当让除非你使用第七条规定,重新设定了log的输出级别
7、设置 特定包的级别和目的地
设置com.qunar.log4j包的级别为ERROR级别
log4j.logger.com.qunar.log4j=ERROR
特别注意:此处包级别的设置会覆盖rootLogger的级别设置
设置com.qunar.logback包的输出 到logback Appender
log4j.logger.com.qunar.logback=DEBUG,logback
8、MDC 和 NDC
NDC和MDC是log4j用于存储应用程序的上下文信息(context infomation),从而便于在log中使用这些上下文信息。
NDC采用了一个类似栈的机制来push存储上下文信息,每一个线程都独立地储存上下文信息。比如说一个servlet就可以针对每一个request创建对应的NDC,储存客户端地址等等信息。相关的信息使用NDC.push(message);
在log的时候将信息输出。在相应的PatternLayout中使用”%x”来输出存储的上下文信息
MDC:
MDC内部使用了类似map的机制来存储信息,相对应的方法,MDC.put(key,value);在配置PatternLayout的时候使用:%X{key}来输出对应的value
MDC.put("domain", "www.qunar.com"); LogDependencyApi.printLog("xinchun.wang login in~");
log4j.appender.logApi.layout.ConversionPattern = %d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L][%X{domain}]%x %m%n
输出:
07-20 12:00:19.270 ERROR [LogDependencyApi.java:17][www.qunar.com]ndc info 1 ndc info 3 hello xinchun.wang login in~
案例:
log4j.rootLogger = INFO,debugFile,infoFile,errorFile,stdout #注意:INFO 此处的配置 为INFO ,即使其他 appender的Threshold的级别为DEBUG,也不会输出。 #rootLogger 拥有第一优先级 #此处包级别的设置会覆盖rootLogger的级别设置 #log4j.logger.com.qunar.log4j=DEBUG #此处的配置,一般适用于引用的jar包,或者特定功能的逻辑,输出到某一个文件内 #log4j.logger.com.qunar.logback=DEBUG,logback log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c:%L %p - %m%n log4j.appender.debugFile = org.apache.log4j.DailyRollingFileAppender log4j.appender.debugFile.Threshold= DEBUG log4j.appender.debugFile.Append = true log4j.appender.debugFile.File =${catalina.base}/logs/debugFile.log log4j.appender.debugFile.encoding = UTF-8 log4j.appender.debugFile.layout = org.apache.log4j.PatternLayout log4j.appender.debugFile.layout.ConversionPattern = %d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n log4j.appender.infoFile = org.apache.log4j.DailyRollingFileAppender log4j.appender.infoFile.Threshold= INFO log4j.appender.infoFile.Append = true log4j.appender.infoFile.File =${catalina.base}/logs/infoFile.log log4j.appender.infoFile.encoding = UTF-8 log4j.appender.infoFile.layout = org.apache.log4j.PatternLayout log4j.appender.infoFile.layout.ConversionPattern = %d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n log4j.appender.errorFile = org.apache.log4j.DailyRollingFileAppender log4j.appender.errorFile.Threshold= ERROR log4j.appender.errorFile.Append = true log4j.appender.errorFile.File =${catalina.base}/logs/errorFile.log log4j.appender.errorFile.encoding = UTF-8 log4j.appender.errorFile.layout = org.apache.log4j.PatternLayout log4j.appender.errorFile.layout.ConversionPattern = %d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n log4j.appender.logback = org.apache.log4j.DailyRollingFileAppender log4j.appender.logback.Threshold= DEBUG log4j.appender.logback.Append = true log4j.appender.logback.File =${catalina.base}/logs/logback.log log4j.appender.logback.encoding = UTF-8 log4j.appender.logback.layout = org.apache.log4j.PatternLayout log4j.appender.logback.layout.ConversionPattern = %d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n
8、maven 配置:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.4</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.4</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
发表评论
-
guava-cache-本地缓存(收藏)
2017-05-22 20:00 2848范例 -
jackson-filter特性
2016-07-12 17:20 3948jackson提供动态序列化的输出json static ... -
json-jackson多子类继承的反序列化
2015-03-24 20:31 11034相关文章: http://wangxinchun.iteye. ... -
HttpAsyncClient
2014-12-16 18:31 3398参考: http://wangxinchun.iteye.co ... -
Httpclient再续
2014-11-16 12:55 2408参考: http://wangxinchun.iteye.co ... -
hibernate-validator
2014-11-13 18:08 2675在web工程中,对于用户 ... -
HttpClient
2014-10-13 18:16 2044参考: http://wangxinchun.iteye.co ... -
slf4j-logback-filter-MDC进阶
2014-08-13 11:44 6388Have lots of ideas and throw ... -
slf4j-logback-Appender进阶
2014-08-08 11:17 7203logback 进阶 基础篇请参考http://wangxin ... -
slf4j-logback
2014-07-22 00:33 3089上一篇文章讲了log4j的 ... -
java-json
2014-04-26 17:45 2317相关文章: http://dreamhead.blogbus. ... -
基于注解的参数校验框架
2013-12-07 21:54 3614近期由于工作的需要,写了一个简易的参数校验框架,虽然市场上有c ...
相关推荐
赠送jar包:slf4j-log4j12-1.7.25.jar; 赠送原API文档:slf4j-log4j12-1.7.25-javadoc.jar; 赠送源代码:slf4j-log4j12-1.7.25-sources.jar; 赠送Maven依赖信息文件:slf4j-log4j12-1.7.25.pom; 包含翻译后的API...
slf4j-log4j12-1.7.x版本是SLF4J针对Log4j 1.2版本的绑定器,它使得应用可以使用SLF4J接口,但实际的日志输出通过Log4j进行。这个桥接器让项目能利用SLF4J的灵活性,同时使用Log4j的成熟实现。 在提供的文件名列表...
赠送jar包:slf4j-log4j12-1.6.1.jar; 赠送原API文档:slf4j-log4j12-1.6.1-javadoc.jar; 赠送源代码:slf4j-log4j12-1.6.1-sources.jar; 赠送Maven依赖信息文件:slf4j-log4j12-1.6.1.pom; 包含翻译后的API文档...
赠送jar包:slf4j-log4j12-1.7.21.jar; 赠送原API文档:slf4j-log4j12-1.7.21-javadoc.jar; 赠送源代码:slf4j-log4j12-1.7.21-sources.jar; 赠送Maven依赖信息文件:slf4j-log4j12-1.7.21.pom; 包含翻译后的API...
最后,`slf4j-log4j12-1.6.1.jar`是`SLF4J`到`log4j`的具体适配器,它允许`SLF4J`API调用被映射到`log4j`的实现上。这样,即使你的代码使用了`SLF4J`API,实际上也可以无缝地与`log4j`日志系统协同工作。`slf4j-log4...
slf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4j12-1.0.jarslf4j-log4...
在使用SLF4J和Log4j12时,你需要注意的一点是,由于Log4j1.2相比Log4j2在某些方面可能较旧,例如性能和功能更新,因此在新项目中,你可能会考虑使用更新的SLF4J绑定器,如slf4j-log4j2,以便利用Log4j2的改进特性。...
标题中的"slf4j-log4j12-1.7.12.jar"是SLF4J的一个绑定包,它的作用是将SLF4J API与log4j日志框架连接起来。具体来说,这个版本(1.7.12)的绑定包实现了SLF4J的API,并将其桥接到log4j的实现上,使得开发者可以通过...
SLF4J (Simple Logging Facade for Java) 是一个用于各种日志框架的简单抽象,例如java.util.logging、Logback 和 Log4j。它的主要目的是为应用程序提供一个可插入的日志接口,允许最终用户在部署时插入所需的日志库...
SLF4J-log4j12桥接库则是连接SLF4J接口与Log4j实现的桥梁,使得开发者可以使用SLF4J的API,同时利用Log4j进行日志记录。 SLF4J-api-1.5.6.jar是SLF4J API的实现,它包含了一系列的日志记录接口,如`Logger`, `Level...
SLF4J(Simple Logging Facade for Java)与Log4j12的集成包`slf4j-log4j12-1.6.6.jar`是Java开发中常用的日志处理工具,它允许开发者使用SLF4J的API,同时实现在运行时绑定到Log4j 1.2框架。这个版本的jar包包含了`...
slf4j-log4j12-1.6.1.jar slf4j-log4j
这个"slf4j-log4j12.jar"文件就是SLF4J与Log4j 1.2桥接器的实现,它使得SLF4J调用能够被Log4j 1.2的日志系统捕获并处理。 1. **SLF4J**:SLF4J的设计目标是为各种日志API提供一个简单统一的接口,这样应用程序就...
5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-slf4j-1.7.21-sources.jar 7、osgi-over-slf4j-1.7.21.jar 8、osgi-over-slf4j-1.7.21-sources.jar 9、slf4j-android-1.7.21.jar 10、slf4j-android-1.7.21-...
SLF4J(Simple Logging Facade for...`slf4j-api-1.7.12.jar`和`slf4j-log4j12-1.7.12.jar`分别是SLF4J API和SLF4J到Log4j的绑定,它们共同工作,使开发者能够利用Log4j的强大功能,同时保持代码与具体日志系统的分离。
SLF4J作为接口层,允许代码独立于具体日志框架,slf4j-log4j12作为桥接器将SLF4J调用转换为Log4j操作,而Log4j则负责实际的日志记录和管理。这种设计模式使得日志管理更加标准化,同时提高了项目的可维护性和可移植...
slf4j-log4j12-1.7.33.jar
赠送jar包:slf4j-log4j12-1.7.16.jar; 赠送原API文档:slf4j-log4j12-1.7.16-javadoc.jar; 赠送源代码:slf4j-log4j12-1.7.16-sources.jar; 赠送Maven依赖信息文件:slf4j-log4j12-1.7.16.pom; 包含翻译后的API...
`slf4j-log4j12-1.7.2.jar` 是SLF4J的一个绑定包,它的作用是将SLF4J接口与Log4j 1.2实现进行绑定。这个版本号`1.7.2`表示这是SLF4J的一个稳定版本,发布于2012年,包含了对Log4j 1.2的支持和一些错误修复。 在Java...
赠送jar包:log4j-over-slf4j-1.7.33.jar; 赠送原API文档:log4j-over-slf4j-1.7.33-javadoc.jar; 赠送源代码:log4j-over-slf4j-1.7.33-sources.jar; 赠送Maven依赖信息文件:log4j-over-slf4j-1.7.33.pom; ...