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可学习的地方还有很多,如:如何动态更改日志文件位置

      

  • 相关阅读:
    CocoaPods入门到精通
    SDAutoLayout 一行代码搞定自动布局
    iOS 开发实践之Auto Layout(From Vincent Sit)
    web前端开发_清除浮动
    转 使用Autolayout xib实现动态高度的TableViewCell
    有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?
    Objective-C 相关Category2
    Objective-C 相关Category
    Mac 破解Adobe Photoshop CS6
    leetcode@ [315/215] Count of Smaller Numbers After Self / Kth Largest Element in an Array (BST)
  • 原文地址:https://www.cnblogs.com/yangh2016/p/5714891.html
Copyright © 2011-2022 走看看