单独使用log4j的时候日志使用:
import org.apache.log4j.Logger;
static Logger log = Logger.getLogger(XX.class);
如果使用commons-logging-1.1.jar,当然依然可以使用上面的配置,但是为了让logg4j与代码解耦可以使用以下
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
static Log logger = LogFactory.getLog(TestLog4j.class);
配置某些jar包的输入日志级别,
比如设置hibernate的jar包中日志输出级别为WARN,输入的appenderName为XX
log4j.logger.org.hibernate=WARN XX
其中比较牛B的一个属性,我认为牛B就是很牛b
log4j.additivity.org.hibernate=false
这里的additivity主要是设置jar包下面的日志要不要输出到log4j.rootLogger = [ level ] , appenderName, appenderName,..........appenderName这里。false是不输出,默认是true,是输出的,
牛不牛。。,
文字是“红牛”,累了就喝红牛,你懂得
以下来源于网络,主要太多的资源了,再此多谢,这不侵权。。。
1.基本参数解释:
⑴全局配制
log4j.rootLogger = [ level ] , appenderName, appenderName,..........appenderName
★log4j.rootLogger的意思可以理解为:根log或者所有的log
★level就是输出级别,只能设置一个值。
·关于等级,前边已经说过了有5种,他们之间的关系可以理解为:
调试(DEBUG):包含调试(DEBUG)、信息(INFO)、警告(WARN)、错误(ERROR)、致命错误(FATAL)
信息(INFO):包含信息(INFO)、警告(WARN)、错误(ERROR)、致命错误(FATAL)
警告(WARN):包含警告(WARN)、错误(ERROR)、致命错误(FATAL)
错误(ERROR):包含错误(ERROR)、致命错误(FATAL)
致命错误(FATAL):只有他自己
这样,如果log4j.rootLogger = INFO,那么 INFO,WARN,ERROR,FATAL就全部会被输出
如果log4j.rootLogger = ERROR,那么ERROR,FATAL就全部会被输出
★appenderName就是记录的目标,目标可以多个,中间用『,』分割,appenderName是自己定义的,换句话说,名字是随便起的,起了名之后,就需要在下边设定具体配制
总结一下这部分,比如说有这么一句log4j.rootLogger = INFO , F1,F2那么就以为着要将所有INFO,WARN,ERROR,FATAL的log全部输出到F1,F2上。F1,F2是什么?往下看。。。。
⑵具体配制
log4j.appender.F1=org.apache.log4j.ConsoleAppender
log4j.appender.F1.layout=org.apache.log4j.PatternLayout
log4j.appender.F1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
★log4j.appender.F1=org.apache.log4j.ConsoleAppender的意思就是:将F1设置为控制台输出
·还可以设置成什么?
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
★log4j.appender.F1.layout=org.apache.log4j.PatternLayout的意思就是:将F1的输出布局设置为自定义输出布局。
·还可以设置成什么?
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.xml.XMLLayout(以XML形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
★log4j.appender.F1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n既然上边定义的是自定义输出布局,那么就要定义一下具体输出什么样了~~上边的%c %p %m 等以%开头的都是模式字符串,除了模式字符串外[]-空格等这些字符会按照原样显示。
·模式字符串解释:
%m:消息本身
%p:消息的级别INFO,WARN,ERROR。。。
%r:从程序开始执行到当前日志产生时的时间间隔(微秒)
%c:输出当前日志动作所在的category名称。例如:如果category名称是"a.b.c","%c{2}"将会输出"b.c". {2}意谓着输出“以点分隔开的category名称的后两个组件”,如果 {n}没有,将会输出整个category名称.
%t:输出当前线程的名称
%x:输出和当前线程相关联的NDC,尤其用到像java servlets这样的多客户多线程的应用中。
%n:输出平台相关的换行符。
%%:输出一个"%"字符
%d:输出日志产生时候的日期,当然可以对日期的格式进行定制。例如:%d{HH:mm:ss,SSSS}或者是%d{dd MMM yyyy HH:mm:ss,SSSS},如果没有指定后面的格式,将会输出ISO8601的格式。
%l:输出位置信息,相当于%C.%M(%F:%L)的组合。
%C:输出日志消息产生时所在的类名,如果类名是“test.page.Class1”%C{1}表示输出类名"Class1",%C{2}输出"page.Class1",而%C则输出"test.page.Class1"。
%M:输出日志消息产生时的方法名称
%F:输出日志消息产生时所在的文件名称
%L:输出代码中的行号
·可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。
总结一下,现在来我们所配制的F1的全部内容
·我们把它配制成了屏幕输出
·输出的布局为:自定义布局
·我们又定义了自定义布局的格式:日期时间(格式为:yyyy-MM-dd HH:mm:ss,SSS)[产生该日志的包名类名方法名] [等级] 信息+回车
如果想配制F2为每天产生一个日志文件,并且保存为xml,就这么写:
log4j.appender.F2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.F2.layout=org.apache.log4j.xml.XMLLayout
这样就可以了吗?当然不是,既然保存为文件。。至少要指定一个文件名吧
log4j.appender.F2.File=c:/logs/log.xml
可以了吗?可以运行了。。。但是。。既然每天都产生一个文件,那么前一天的怎么办呢?
log4j.appender.F2.DatePattern=yyyyMMdd'.xml.back'
这样log4j会在第一次产生今天的log的同时,将昨天的log备份为 log文件名.扩展名yyyyMMdd.xml.back。对应我们这个文件,今天的log到明天有新log产生的时候,就会变为log.xml20070420.xml.back
这样的参数到底有多少?常用的有:
★ConsoleAppender选项
·Threshold=WARN:指定日志消息的输出最低层次。
·ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
·Target=System.err:默认情况下是:System.out,指定输出控制台
★FileAppender 选项
·Threshold=WARN:指定日志消息的输出最低层次。
·ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
·File=mylog.txt:指定消息输出到mylog.txt文件。
·Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
★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:指定可以产生的滚动文件的最大数。
★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: 每分钟
★PatternLayout 选项
·ConversionPattern=%m%n :指定怎样格式化指定的消息。
★HTMLLayout 选项
·LocationInfo=true:默认值是false,输出java文件名称和行号
·Title=my app file: 默认值是 Log4J Log Messages.
★XMLLayout 选项
·LocationInfo=true:默认值是false,输出java文件和行号
现在来看一下我们完整的第一个配制文件:
========================================================================================
log4j.rootLogger = INFO,F1,F2
log4j.appender.F1=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.F1.Target=System.out
log4j.appender.F1.layout=org.apache.log4j.PatternLayout
log4j.appender.F1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
log4j.appender.F2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.F2.File=c:/logs/log.xml
log4j.appender.F2.DatePattern=yyyyMMdd-HH'.xml.back'
log4j.appender.F2.layout=org.apache.log4j.xml.XMLLayout
========================================================================================
编段代码看看效果
========================================================================================
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Main{
private static Log log = LogFactory.getLog(Main.class);
public static void main(String[] args) throws Exception{
log.info("info");
log.debug("debug");
log.warn("warn");
log.error("error");
}
}
========================================================================================
运行效果
========================================================================================
2007-04-20 12:36:22,531 [cn.yyun.test.Main]-[INFO] info
2007-04-20 12:36:22,531 [cn.yyun.test.Main]-[WARN] warn
2007-04-20 12:36:22,531 [cn.yyun.test.Main]-[ERROR] error
========================================================================================
并且在c:/logs/下有log.xml生成,里边的内容为:
========================================================================================
<log4j:event logger="cn.yyun.test.Main" timestamp="1177043782531" level="INFO" thread="main">
<log4j:message><![CDATA[info]]></log4j:message>
</log4j:event>
<log4j:event logger="cn.yyun.test.Main" timestamp="1177043782531" level="WARN" thread="main">
<log4j:message><![CDATA[warn]]></log4j:message>
</log4j:event>
<log4j:event logger="cn.yyun.test.Main" timestamp="1177043782531" level="ERROR" thread="main">
<log4j:message><![CDATA[error]]></log4j:message>
</log4j:event>
分享到:
相关推荐
"log4j-1.2.13.jar"是Log4j的一个版本,Log4j是一个广泛使用的Java日志框架,提供灵活且强大的日志记录功能。1.2.13是该框架的旧版本,虽然有更新的版本如Log4j 2可用,但很多遗留系统仍可能依赖于这个版本。Log4j...
Apache Commons Logging是一个日志抽象层,它允许开发者在应用程序中使用不同的日志框架,如Log4j、Java内置的日志系统或者其它第三方日志实现,而无需修改代码。通过使用Commons Logging,开发者可以轻松地在运行时...
它的主要目的是提供一个抽象层,使得开发人员可以在不修改代码的情况下,选择和切换不同的日志实现(如log4j、java.util.logging或commons-logging自身的SimpleLog)。通过引入Commons Logging,"java-unrar-0.3.jar...
Apache Commons Logging是另一个关键的Java库,它提供了一个统一的日志接口,让开发者可以轻松地切换不同的日志实现,如Log4j、Java内置的java.util.logging或Simple Logging Facade for Java (SLF4J)。这个库的主要...
Apache Commons Logging是Java的一个日志抽象层,它允许开发者选择他们喜欢的日志实现,如Log4j或Java内置的日志API。通过这个库,程序员可以在不修改代码的情况下更换日志实现,增强了项目的可移植性和可维护性。 ...
首先,我们来看"commons-logging-1.2.1.1.jar"这个文件,它是Commons Logging的一个具体版本。1.2.1.1是该库的一个稳定版本,包含了对早期版本的改进和错误修复。这个JAR文件包含了所有必要的类和资源,使得开发者...
"log4j.jar" 和 "commons-logging.jar" 是两个非常著名的Java日志库,它们在Java日志处理中扮演着核心角色。 **log4j.jar** 是Apache软件基金会开发的一个开源日志框架,它为Java应用程序提供了灵活的日志记录解决...
Apache Commons Logging是一个轻量级的日志记录API,它允许开发者选择在运行时使用他们所偏好的日志框架,如Log4j、java.util.logging或Simple Logging Facade for Java (SLF4J)等。它的主要作用是提供一个统一的...
common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的...使用它的好处就是,代码依赖是common-logging而非log4j, 避免了和具体的日志方案直接耦合,在有必要时,可以更改日志实现的第三方库。
例如,如果开发者想要使用Log4j作为日志框架,只需要在项目的配置中指定Log4j的相关依赖,Commons Logging就会自动检测并使用Log4j进行日志记录。 Commons Logging的主要优点包括: 1. **可插拔性**:可以在不修改...
Spring 框架广泛使用 Commons Logging 进行日志记录,因为它允许 Spring 与多种日志实现(如 log4j、java.util.logging 或 logback)无缝集成。 描述中提到的 "java spring 中打印信息的jar包" 指的是 Commons ...
Commons Logging是Java日志框架的一个抽象层,允许开发者选择底层的日志实现,如Log4j、Java内置的日志API等。HttpClient使用Commons Logging来记录其运行时信息,帮助开发者调试和监控HTTP请求的执行情况。 这些...
这个库的主要目标是提供一个统一的API,使得开发者可以方便地切换不同的日志实现,如Log4j、java.util.logging(JUL)或Commons Loggin itself。通过使用 Commons Logging,开发人员可以在不修改代码的情况下,根据...
使用Commons Logging时,开发者不需要直接实例化特定日志系统的类,而是通过Commons Logging提供的接口(如`org.apache.commons.logging.Log`和`org.apache.commons.logging.LogFactory`)来创建和使用日志对象。...
Commons Logging 提供了一组接口和辅助类,使得应用程序可以透明地使用任何兼容的日志实现,如Log4j、Java内置的日志API(java.util.logging)或者简单的控制台输出。这个库的主要优点是灵活性和可插拔性,开发者...
在提供的压缩文件`log4j与commenlog`中,可能包含了Log4j的相关配置文件和Commons Logging的JAR包,这使得开发者可以直接在项目中使用这两个库。通过这样的集成,开发者可以轻松地实现日志记录,同时保持系统的可...
这意味着开发者可以使用一个统一的API,然后在部署时选择具体的日志框架,如Log4j、java.util.logging或Apache Commons Logging自己实现的简单日志系统。`commons-logging`库提供了类`org.apache.commons.logging....
Apache Commons Logging,简称为Commons Logging,是Apache软件基金会开发的一个开源日志框架,主要用于提供一个统一的日志API,让开发者能够在不改变代码的情况下,自由切换不同的日志实现库,如Log4j、Java内置的...
在项目中,我们通常会同时看到`log4j-1.2.14.jar`和`commons-logging-1.1.jar`这两个文件,这表明项目使用了Commons Logging作为日志接口,并将Log4j作为实际的日志实现。为了使两者协同工作,需要确保在项目的类...
在实际使用中,我们通常不会直接使用`commons-logging-1.1.1.jar`这个包,而是将其与其他日志实现(如log4j的jar包)一起引入项目中。这样,Commons Logging就会自动识别并使用log4j作为其后端日志系统。如果在项目...