zoukankan      html  css  js  c++  java
  • 6 log4j -- 一个笨的使用方法

      log4j的说明:

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

      问题:通常我们在工程中配置log4j配置文件后,把工程打包在linux环境上运行的时候,经常出现自己在log4j中设置的日志文件输出没有产生日志文件,通常定位起来很麻烦,有可能是程序未找到该log4j配置文件或者是别的log4j配置文件把该配置文件覆盖了等问题,本人采用一种比较笨的方法显示指明程序采用的log4j配置文件。

         方法代码如下:

    public static String LOGFILE = "";
    
        static {
            LOGFILE = getLog4jPath();
            if (new File(LOGFILE).exists()) {
                PropertyConfigurator.configure(LOGFILE);
                logger.info("log4j配置文件生效,路径为:{}", LOGFILE);
            } else {
                logger.warn("log4j配置文件:{}不存在", LOGFILE);
            }
        }

    这样就确保了程序加载的是你指定的log4j.properties配置文件。

      log4j.properties配置文件内容:

     ### set log levels ###
    log4j.rootLogger = debug,stdout,R,E
    
    ### 输出到控制台 ###
    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    log4j.appender.stdout.Threshold = INFO
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} %p [%t] %c{2} (%M:%L) - %m%n
    
    ### 输出etl-web日志到文件 ###
    log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.R.ImmediateFlush=true
    log4j.appender.R.Append = true
    log4j.appender.R.File = ${catalina.home}/logs/etl_web.log
    log4j.appender.R.encoding=UTF-8
    log4j.appender.R.Threshold = INFO
    log4j.appender.R.DatePattern='.'yyyy-MM-dd
    log4j.appender.R.layout = org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} %p [%t] %c{2} (%M:%L) - %m%n
    
    ### 保存异常信息到单独文件 ###
    log4j.appender.E = org.apache.log4j.RollingFileAppender
    log4j.appender.E.File = ${catalina.home}/logs/etl_error.log
    log4j.appender.E.encoding=UTF-8
    log4j.appender.E.Append = true
    log4j.appender.E.Threshold = ERROR
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} %p [%t] %c{2} (%M:%L) - %m%n

      日志输出级别是debug,三种输出路径,分别是stdout,R,E

      stdout为控制台输出,输出INFO及以上级别

      R为按天输出文件,输出级别为INFO及以上,E和R基本相同,但仅输出ERR及以上级别日志。

      有时候,你可能不希望有些jar包的日志输出到你的日志里面,你可以在log4j.properties按照如下方式配置:

    log4j.logger.org.springframework=OFF 作用是:org.springframework包下面的日志不再输出,这样就屏蔽了所有的spring日志。

     ### set log levels ###
    log4j.rootLogger = debug,stdout,F
     
    log4j.logger.org.springframework=OFF  
    log4j.logger.org.directwebremoting=OFF  
    log4j.logger.org.quartz=OFF  
    log4j.logger.org.terracotta.quartz=OFF
    log4j.logger.org.mybatis=OFF 
    log4j.logger.org.apache.ibatis=OFF
    
    
    ### 输出到控制台 ###
    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    log4j.appender.stdout.Threshold = INFO
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} %p [%t] %c{2} (%M:%L) - %m%n
    
    ### 输出etl-core任务日志到文件 ###
    log4j.appender.F = org.apache.log4j.FileAppender
    log4j.appender.F.ImmediateFlush=true
    log4j.appender.F.BufferedIO=false
    log4j.appender.F.Append = true
    log4j.appender.F.File = ${etl_core_log_path}/etl_core.log
    log4j.appender.F.encoding=UTF-8
    log4j.appender.F.Threshold = INFO
    log4j.appender.F.layout = org.apache.log4j.PatternLayout
    log4j.appender.F.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} %p [%t] %c{2} (%M:%L) - %m%n
    etl_core_log_path=${catalina.home}/logs;

      log4j可学习的地方还有很多,如:如何动态更改日志文件位置

      

  • 相关阅读:
    ubuntu安装ruby的几种方法总结
    使用一年ESB感受
    web工程迁移---在一个jboss5或jboss6中运行多个实例
    web工程迁移---weblogic8迁移到jboss5遇到的异常
    web工程迁移---jboss5迁移到jboss6
    Git使用(3)
    Git使用(2)
    Git使用(1)
    Spring4 mvc+maven 框架搭建(3)
    Spring4 mvc+maven 框架搭建(2)
  • 原文地址:https://www.cnblogs.com/yangh2016/p/5714891.html
Copyright © 2011-2022 走看看