zoukankan      html  css  js  c++  java
  • log4j不输出日志错误分析

    1.rootLogger不输出

      代码如下:

     

    配置文件代码:

    log4j.rootLogger=info, R,userLog

    log4j.appender.R=org.apache.log4j.RollingFileAppender

    log4j.appender.R.File=E:/createHtml.log

    log4j.appender.R.MaxFileSize=100MB

    log4j.appender.R.MaxBackupIndex=20

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

    log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p] %c - %m%n

     

    log4j.appender.userLog=org.apache.log4j.ConsoleAppender

    log4j.appender.userLog.Target=System.out

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

    log4j.appender.userLog.layout.ConversionPattern=%m%n

     

    类中代码:

    private final static Log log = LogFactory.getLog("userInfoLog");

    log.debug(“输出日志====”);

     

    错误:设置好的日志,文件中没有输出,控制台也没有输出

    原因:level级别问题;配置文件中设置的级别是info;而在类中输出使用的是debuglog4jlevel级别为:debugàinfoàwarnàerror

    解决:配置级别高,输出级别低则不会输出,如果反过来就会输出;比如:配置文件改为debug,输出使用log.debug或者log.info或者更高级别都可以。

    2.自定义的日志不输出

      代码如下:

    配置文件代码:

    log4j.appender.createExcel=info,excel

    log4j.appender.excel=org.apache.log4j.FileAppender

    log4j.appender.excel.File=E:/createExcel.log

    log4j.appender.excel.Append=true

    log4j.appender.excel.Threshold=info

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

    log4j.appender.excel.layout.ConversionPattern=%m%n

    log4j.additivity.createExcel = false

     

    类中代码:

    private final static Log log = LogFactory.getLog("createExcel ");

    log.debug(“输出日志====”);

     

       错误:使用自定义的名称createExcel不输出日志

       原因:配置文件中的红色代码处有错误,这种错误很容易在配置文件中有很多日志文件的时候,复制上面的出错;

       解决:log4j.logger.createExcel=info,excelLogger:负责供客户端代码调用,执行debuginfo等方法。 Appender:负责日志的输出,Log4j已经实现了多种不同目标的输出方式,可以向文件输出日志、向控制台输出日志、向Socket输出日志等。红色部分错误的将logger写成了appender;新添加一个自定义的日志的时候必须要是有log4j.logger类。

       扩展:自定义日志的时候还容易出错的地方是:你配置文件中使用自定义名称与类中使用的不一致,这里配置文件中的log4j. appender.createExcel要与类中LogFactory.getLog("createExcel ");一致,否则也会导致不输出日志。

     

    3. 自定义日志使用类名不输出

       代码如下:

    配置文件代码:

        log4j.logger.performanceLogger=INFO,performanceLogger

           log4j.appender.performanceLogger=org.apache.log4j.DailyRollingFileAppender             log4j.appender.performanceLogger.File=/application/resinlog/cmslog/common-perf.log

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

    log4j.appender.excel.layout.ConversionPattern=%m%n

    log4j.additivity.createExcel = false

     

    类中代码:

             private final static Log log = LogFactory.getLog (PerformanceMonitorFilter.class);

        log.debug(“输出日志====”);

     

    错误:指定的日志文件中没有输出日志,也没有报错

    原因:配置文件中使用了自定义名称的方式,但是类中调用日志文件的时候却使用的类名

    解决:如果类是个jar包,不容许修改的,那么就把配置文件改了;具体如下:        log4j.logger.com.hudong.keel.web.filter.PerformanceMonitorFilter=INFO,performanceLogger     

    log4j.appender.performanceLogger=org.apache.log4j.DailyRollingFileAppender

     如果类可以改,那也可以不改配置文件直接该类,如下:

       private final static Log log = LogFactory.getLog (“performanceLogger”);

          扩展:如果你不想在rootLogger指定的文件下输出内容,只想在你知道的自定义文件下输出你的日志,那么你可以把输出开关改为false,默认的是true;如果你不该那么就会在跟日志和你自定义的日志都输出日志;开关如下:

     log4j.additivity.createExcel = false

     

    4.如果配置好文件之后再控制台输出一些红色警告,那么证明你配置的log4j文件有错误;检查一下你的配置文件,具体配置文件的使用间博客其他有关log4j使用的文章。

     

  • 相关阅读:
    Summarizing NUMA Scheduling两篇文章,解释得不错
    VCAP5-DCA – What’s new?
    NUMA总结。
    NUMA and vNUMA
    NUMA
    vsphere 5.1 性能最佳实践。
    vsphere性能
    mysql的事务,隔离级别和锁
    mysql5.7 生成列 generated column
    mysql8 公用表表达式CTE的使用
  • 原文地址:https://www.cnblogs.com/yangkai-cn/p/4016734.html
Copyright © 2011-2022 走看看