Log4j相关知识

来源:互联网 发布:yum 删除java 编辑:程序博客网 时间:2024/06/05 22:52

一、Login4j设置详细说明 (log4j.properties)

     1、log4j.rootCategory = INFO,stdout,R

             -----此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码中,可以任意起名。

                   等级可以分为:INFO、OFF、FATAL、ERROR、WARN、DEBUG、ALL;

                   OFF:则不会打出任何信息;

                   INFO则显示INFO、WARN、ERROR的信息

      2、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:将日志信息以流格式发送到任意指定的地方

      

       3、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:包含日志产生的时间、线程、类别等信息


         4、log4j.appender.stdout.layout.ConversionPattern = [QC]%p[%t]%c.%M(%L) | %m%n

                 如果使用PatternLayout就要指定打印信息的具体格式ConversionPattern,打印参数如下:

                     %p:输出日志信息的优先级,即DEBUG、INFO、WARN、ERROR、FATAL

                     %d:输出日志时间点的日期或者时间,默认格式为ISO8601,也可以在其后指定格式,如

                                       %d{yyy MMM dd HH:mm:ss:SSS}

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

                     %c:输出日志信息所属的类目,通常就是所在类的全名

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

                     %l:输出日志事件的发生位置,相当于%c.%m(%f.%l)的组合,包括类目名、发生的线程,以及在代码中的行数

                     %x:输出和当前线程相关联的NDC,尤其用到像java servlet这样的多客户多线程的应用中

                     %%:输出一个%字符

                     %F:输出日志消息产生时所在的文件名称

                     %L:输出代码中的行号

                     %m:输出代码中指定的消息,产生的日志具体信息

                     %n:输出一个回车换行符

                      [QC]:是log信息的开头,可以为任意字符,一般为项目简称

           5、log4j.appender.R = org.apache.log4j.DailyRollingFileAppender

                          此句定义名为R的输出端的类型为每天产生一个日志文件

           6、log4j.appender.R.File = D:\\Tomcat\\qc.log

      

           7、log4j.logger.com.neusoft = DEBUG

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

 

          8、log4j.logger.org.hibernate = DEBUG

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

                  此两句是hiberante的包的所有类等级为DEBUG


二、动态的改变日志的级别和策略

         即修改log4j.properties,不需啊哟重启WEB应用,这个需要在

        web.xml中配置一下

在web.xml中的详细设定如下:<context-param>    <param-name>log4jConfigLocation</param-name>    <param-value>WEB-INF/log4j.properties</param-value> </context-param> <context-param>    <param-name>log4jRefreshInterval</param-name>    <param-value>60000</param-value> </context-param> <!-- 需要添加spring-web.jar包,否则用发生错误信息 --><listener>    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> 

说明:

      其中第二部分就是能够动态修改log4j.properties的关键,容器会每60秒扫描log4j的配置文件 ,有一点就是我们如果用RollingFileAppender或者 FileAppender时,可以通过${webapp.root}来定位到服务器的发布的该项目下,这是spring把web目录的路径压入到了 webapp.root的系统变量。然后,在log4j.properties 里就可以这样定义logfile位置log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log 如果有多个web应用,怕webapp.root变量重复,可以在context-param里定义webAppRootKey。当我们定义完log4j.properties后,剩下的就是在需要记录的class中new 出Logger了。


原创粉丝点击