III 24 log4j

log4j,log for java,java的日志;

在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包Log4j;

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程,最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码;

通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块;而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中;

使用的license:Apache License V2.0;

配置:

1、加入log4j-1.2.8.jar(可以选择log4j的更高版本)到lib下;

2、在CLASSPATH下建立log4j.properties,内容如下:

#---------------------------file start-----------------------------

log4j.rootCategory=INFO,stdout , R   #(此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名;等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO、WARN、ERROR的log信息,而DEBUG信息不会被显示,具体可参照定义配置文件中的logger)

log4j.appender.stdout=org.apache.log4j.ConsoleAppender   #(此句为定义名为stdout的输出端是哪种类型,可以是org.apache.log4j.ConsoleAppender(控制台)、org.apache.log4j.FileAppender(文件)、org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)、org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)、org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方;具体可参照定义配置文件中的Appender)

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   #(此句为定义名为stdout的输出端的layout是哪种类型,可以是org.apache.log4j.HTMLLayout(以HTML表格形式布局)、org.apache.log4j.PatternLayout(可以灵活地指定布局模式)、org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)、org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息;具体可参照定义配置文件中的Layout)

log4j.appender.stdout.layout.ConversionPattern=[QC]%p [%t] %C.%M(%L) | %m%n   #(如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:

%m 输出代码中指定的消息;

%M 输出打印该条日志的方法名;

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;

%r 输出自应用启动到输出该log信息耗费的毫秒数;

%c 输出所属的类目,通常就是所在类的全名;

%t 输出产生该日志事件的线程名;

%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-1822:10:28,921;

%l 输出日志事件的发生位置,及在代码中的行数;

[QC]是log信息的开头,可以为任意字符,一般为项目简称,输出的信息[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returningcached instance of singleton bean ‘MyAutoProxy‘;具体可参照定义配置文件中的格式化日志信息)

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender   #(此句与第3行log4j.appender.stdout=org.apache.log4j.ConsoleAppender一样,定义名为R的输出端的类型为每天产生一个日志文件)

log4j.appender.R.File=D:\\Tomcat5.5\\logs\\qc.log  #(此句为定义名为R的输出端的文件名为D:\\Tomcat 5.5\\logs\\qc.log可以自行修改)

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

log4j.appender.R.layout.ConversionPattern=%d-[TS]%p %t %c - %m%n

log4j.logger.com.neusoft=DEBUG   #(指定com.neusoft包下的所有类的等级为DEBUG,可以把com.neusoft改为自己项目所用的包名)

log4j.logger.com.opensymphony.oscache=ERROR

log4j.logger.net.sf.navigator=ERROR   #(这两句是把这两个包下出现的错误的等级设为ERROR,如果项目中没有配置EHCache,则不需要这两句)

log4j.logger.org.apache.commons=ERROR

log4j.logger.org.apache.struts=WARN  #(这两句是struts的包)

log4j.logger.org.displaytag=ERROR   #(displaytag的包)

log4j.logger.org.springframework=DEBUG   #(Spring的包)

log4j.logger.com.ibatis.db=WARN

log4j.logger.org.apache.velocity=FATAL   #(这两句是hibernate的包)

#注:以上这些包的设置可根据项目的实际情况而自行定制

log4j.logger.com.canoo.webtest=WARN   #

log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

log4j.logger.org.hibernate=DEBUG

log4j.logger.org.logicalcobwebs=WARN

#-------------------------------file end---------------------------------

3、在要输出日志的类中加入相关语句:

定义属性:static Logger logger = Logger.getLogger(LogDemo.class); //LogDemo为相关的类

在相应的方法中:

if (logger.isDebugEnabled()){

logger.debug(“System …..”);

}

定义配置文件:

Log4j支持两种配置文件格式:一种是XML(标准通用标记语言下的一个应用)格式的文件,一种是Java特性文件log4j.properties(键=值);

使用log4j.properties:

①、配置根Logger,Logger 负责处理日志记录的大部分操作,其语法为:

log4j.rootLogger = [level ] , appenderName, appenderName, …   #(其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别,Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG,通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关,比如在这里定义了INFO级别,只有等于及高于这个级别的才进行处理,则应用程序中所有DEBUG级别的日志信息将不被打印出来,ALL:打印所有的日志,OFF:关闭所有的日志输出;appenderName就是指定日志信息输出到哪个地方,可同时指定多个输出目的地)

②、配置日志信息输出目的地 Appender,Appender负责控制日志记录操作的输出,其语法为:

log4j.appender.appenderName = fully.qualified.name.of.appender.class

log4j.appender.appenderName.option1 = value1

log4j.appender.appenderName.optionN = valueN

#(这里的appenderName为在①里定义的,可任意起名;其中,Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台),

org.apache.log4j.FileAppender(文件),

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件),

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方),

例如:log4j.appender.stdout=org.apache.log4j.ConsoleAppender

定义一个名为stdout的输出目的地,ConsoleAppender为控制台。

③、配置日志信息的格式(布局)Layout,Layout负责格式化Appender的输出,其语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

log4j.appender.appenderName.layout.option1 = value1

log4j.appender.appenderName.layout.optionN = valueN

其中,Log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

格式化日志,Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:

%m 输出代码中指定的消息;

%M 输出打印该条日志的方法名;

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;

%r 输出自应用启动到输出该log信息耗费的毫秒数;

%c 输出所属的类目,通常就是所在类的全名;

%t 输出产生该日志事件的线程名;

%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-1822:10:28,921;

%l 输出日志事件的发生位置,及在代码中的行数。

Note:

The steps described in this section areneeded when you want to reconfigure Tomcat to use Apache log4j for its ownlogging.

These steps are not needed if you just wantto use log4j in your own web application. — In that case, just put log4j.jarand log4j.properties into WEB-INF/lib and WEB-INF/classes of your webapplication.

1、Create a file calledlog4j.properties with the following content and save it into $CATALINA_BASE/lib

--------------file start---------------

log4j.rootLogger = INFO, CATALINA

# Define all the appenders

log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender

log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina

log4j.appender.CATALINA.Append = true

log4j.appender.CATALINA.Encoding = UTF-8

# Roll-over the log once per day

log4j.appender.CATALINA.DatePattern = ‘.‘yyyy-MM-dd‘.log‘

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

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

log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender

log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost

log4j.appender.LOCALHOST.Append = true

log4j.appender.LOCALHOST.Encoding = UTF-8

log4j.appender.LOCALHOST.DatePattern = ‘.‘yyyy-MM-dd‘.log‘

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

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

log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender

log4j.appender.MANAGER.File = ${catalina.base}/logs/manager

log4j.appender.MANAGER.Append = true

log4j.appender.MANAGER.Encoding = UTF-8

log4j.appender.MANAGER.DatePattern = ‘.‘yyyy-MM-dd‘.log‘

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

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

log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender

log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager

log4j.appender.HOST-MANAGER.Append = true

log4j.appender.HOST-MANAGER.Encoding = UTF-8

log4j.appender.HOST-MANAGER.DatePattern = ‘.‘yyyy-MM-dd‘.log‘

log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout

log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.Encoding = UTF-8

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

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

# Configure which loggers log to whichappenders

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] = \

INFO, MANAGER

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] = \

INFO, HOST-MANAGER

------------------file end----------------------

2、download:tomcat-juli.jar and tomcat-juli-adapters.jar

http://archive.apache.org/dist/logging/log4j/1.2.17/

http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.72/bin/extras/

3、This tomcat-juli.jar differs from the default one. It contains the full Apache Commons Logging implementation and thus is able to discover the presence of log4j and configure itself.

4、If you want to configure Tomcat to use log4j globally:

Put log4j.jar and tomcat-juli-adapters.jar from "extras" into $CATALINA_HOME/lib.

Replace $CATALINA_HOME/bin/tomcat-juli.jar with tomcat-juli.jar from "extras".

5、If you are running Tomcat with separate $CATALINA_HOME and $CATALINA_BASE and want to configure touse log4j in a single $CATALINA_BASE only:

Create $CATALINA_BASE/bin and $CATALINA_BASE/lib directories if they do not exist.

Put log4j.jar and tomcat-juli-adapters.jar from "extras" into $CATALINA_BASE/lib

Put tomcat-juli.jar from "extras" as $CATALINA_BASE/bin/tomcat-juli.jar

If you are running with a security manager,you would need to edit the $CATALINA_BASE/conf/catalina.policy file to adjustit to using a different copy of tomcat-juli.jar.

6、Delete $CATALINA_BASE/conf/logging.properties to prevent java.util.logging generating zero length log files.

7、restart tomcat

时间: 2024-08-28 15:58:31

III 24 log4j的相关文章

Log4J日志配置详解

一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR <

java之log4j的配置

log4j有很多的优点,用起来很方便,就是配置起来有些麻烦,下面我介绍一下log4j的配置方法. log4j是用来记录日志的. 软件的运行过程离不开日志.日志主要用来记录系统运行过程中的一些重要的操作信息,便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者出现问题后根据日志找到发生的原因. 日志根据记录内容的不同,主要分成以下3类: SQL日志:记录系统执行的SQL语句. 异常日志:记录系统运行中发生的异常事件. 业务日志:记录系统运行过程,如用户登录,操作记录. 要使用log4j

log4j配置祥解

第一步:加入log4j-1.2.8.jar到lib下. 第二步:在CLASSPATH下建立log4j.properties.内容如下: 1 log4j.rootCategory=INFO, stdout , R 2 3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 5 log4j.appender.stdout

关于日志类Log4j的使用

log4j 的配置 1 #下面定义日志输出级别是 INFO,并且配置了2个输出目的地,一个是A3,一个是console 2 3 log4j.rootLogger = INFO,A3,CONSOLE 4 5 #日志最低的输出级别 6 log4j.appender.A3.Threshold=INFO 7 log4j.appender.A3.encoding=UTF-8 8 #每天产生一个文件DailyRollingFileAppender 9 log4j.appender.A3 = org.apac

log4j的配置及使用

用日志的好处: 可以长久的保存日志信息. 日志可以保存到:网络.文件.数据库 设置日志的级别. OFF Fatal – System.exit(0); - JVM, ERROR – 错误,模块错误. WARN – 警告 INFO - 程序员调试信息-相当于system.err.  这也是我们经常输出的方式 DEBUG - system.out. – 一般情况下,框架用out. ON 设置打印级别向上兼容 Log4j需要两个文件: 1.导包 log4j.jar 2.log4j配置文件,此配置文件,

log4j日志学习入门

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程.最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码: 说明:下面分为三部分, 第一部分讲解如何配置log4j: 第二部分为对log4j.properties配置文件中的各

【转-整理】log4j 简单解释,配置

log4j主要由三大组件组成:loggers,appenders和layouts. 1.      定义日志组件logger 每个logger都可以拥有一个或者多个appender,每个appender表示一个日志的输出目的地,比如console或者某个文件. 配置root Logger的语法为: log4j.rootLogger=[priority],appenderName,appenderName,...- 配置自定义Logger组件的语法为: log4j.logger.loggerNam

mybatis显示sql语句 log4j.properties配置文件

log4j.properties配置如下: 1 将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试: 2 3 ### 设置Logger输出级别和输出目的地 ### 4 log4j.rootLogger=debug,stdout,logfile 5 6 7 ### 把日志信息输出到控制台 ### 8 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 9 #log4j.appender.

Log4j配置的经典总结,打印日志文件,日志存库

    一.介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制 日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程. Log4j 由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来