log4j日志系统使用记录

来源:互联网 发布:淘宝一个月能刷多少单 编辑:程序博客网 时间:2024/05/22 16:02
情景:
         tomcat中配置log4j,适用于所有webapp
     
         webapp中配置log4j,适用于单个webapp

1、配置文件的放置
     自动加载(无需在log4j初始化中加载): 默认情况下log4j会在source folder下寻找log4j.xml,若没有则寻找log4j.properties
     手动加载(需要在log4j初始化中加载):若需要将log4j.properties放置在其他目录下,则需要手动加载;在初始化时使用
     PropertyConfigurator.configure("log4j.properties"); 


2、配置文件说明:
  • log4j.properties 配置简单,但不支持复杂的过滤器filter;
  • log4j.xml 文件看起来复杂,但支持复杂过滤器filter和Log4j的新特性;(推荐
log4j配置文件由下面三个重要部分构成:
  • 日志的优先级:(高------>低)OFF,FATAL,ERROR,WARN,INFO,DEBUG,log,ALL自定义级别,这样可以控制到应用程序中相应级别的日志信息开关。
          格式:log4j.rootLogger = [ level ] , appenderName, appenderName, …
          比如定义log4j.rootLogger =  INFO  那意味着DEBUG的信息将不能被输出
  • 日志信息输出目的地:一个输出源称之为appender,以下是 Log4j提供的几个appender:
       org.apache.log4j.ConsoleAppender(控制台),
       org.apache.log4j.FileAppender(文件),
       org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
       org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
       org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  • 日志信息输出格式:
      org.apache.log4j.HTMLLayout(以HTML表格形式布局),
      org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
      org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),  
      org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)                    
  
                布局时的打印参数:
             %m   输出代码中指定的消息
        %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
        %r   输出自应用启动到输出该log信息耗费的毫秒数 
        %c   输出所属的类目,通常就是所在类的全名 
        %t   输出产生该日志事件的线程名 
        %n   输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” 
        %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss
 , SSS},输出类似:2002年10月18日 22  10  28  921 

        %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:
 10 



3、使用
        3.1 java项目中需要这样使用
            public class TestLog4j {
                               public static void main(String[] args) {
                                  PropertyConfigurator.configure( " F:/Code/conf/log4j.properties " 
);
                                  Logger logger = Logger.getLogger(TestLog4j. class 
);
                                  logger.debug(
 " debug " 
);
                                  logger.error(
 " error " 
);
                     }
 

                }
        3.2 java web项目中使用

  • 将log4j.properties放在source目录下,然后编译的时候会在WEB-INF/classes/log4j.properties下
log4j.rootLogger = DEBUG, D , E
### CONSOLE ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c:%L - %m%n
### FILE DEBUG ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.Append = false
log4j.appender.E.Threshold = DEBUG
log4j.appender.D.File = ${webappHome}/WEB-INF/logs/info.log
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### FILE ERROR ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =${webappHome}/logs/error.log
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n
log4j.appender.cmdstdout=org.apache.log4j.ConsoleAppender
log4j.appender.cmdstdout.layout=org.apache.log4j.PatternLayout
log4j.appender.cmdstdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n
### LIMIT CATEGORIES
log4j.logger.org.jbpm=INFO
log4j.logger.org.jbpm.graph=INFO


  • 初始化一个servlet:
public class Log4jInit extends HttpServlet {  public   void init() {    String prefix =  getServletContext().getRealPath("/");    String file = getInitParameter("log4j-init-file");    System.setProperty("webappHome", webappHome);     if(file != null) {      PropertyConfigurator.configure(prefix+file);    }  }  public  void doGet(HttpServletRequest req, HttpServletResponse res) {  }}
  • 配置servlet
 <servlet>    <servlet-name>log4j-init</servlet-name>    <servlet-class>com.foo.Log4jInit</servlet-class>    <init-param>      <param-name>log4j-init-file</param-name>      <param-value>WEB-INF/classes/log4j.lcf</param-value>    </init-param>    <load-on-startup>1</load-on-startup>  </servlet>          
 



参考博客:
               1、LOG4J.PROPERTIES配置详解  http://www.blogjava.net/alexprefect/articles/372959.html ;
               2、log4j的配置文件介绍   http://lengbingteng-163-com.iteye.com/blog/1114906





0 0
原创粉丝点击