• Log4j常用配置及使用


    Log4j常用配置及使用

    2016-12-14

    目录

    1 添加log4j依赖
    2 使用代码配置并调用log
      2.1 代码配置LogConfiguration.java
      2.2 调用
      2.3 结果
    3 使用Properties文件配置并调用
      3.1 文件配置log4j.properties
      3.2 调用
      3.3 结果
    4 按输出级别的种类保存内容到不同目的地
      4.1 文件配置log4j.properties
      4.2 调用
      4.3 结果
    参考

    1 添加log4j依赖


     返回

    maven的pom.xml文件中添加log4j依赖

            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.16</version>
                <scope>provided</scope>
            </dependency>

    2 使用代码配置并调用log


     返回

    2.1 代码配置LogConfiguration.java

    import java.util.Properties;
    import org.apache.log4j.PropertyConfigurator;
    
    public class LogConfiguration {    
        public static void initLog(String logFilePath){
            //声明日志文件存储路径以及文件名、格式
            Properties prop = new Properties();
            //配置日志输出的格式
            prop.setProperty("log4j.rootLogger","info, toConsole, toFile");
            prop.setProperty("log4j.appender.file.encoding","UTF-8" );
            
            prop.setProperty("log4j.appender.toConsole","org.apache.log4j.ConsoleAppender");
            prop.setProperty("log4j.appender.toConsole.Target","System.out");
            prop.setProperty("log4j.appender.toConsole.layout","org.apache.log4j.PatternLayout ");
            prop.setProperty("log4j.appender.toConsole.layout.ConversionPattern","[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n");    
            
            prop.setProperty("log4j.appender.toFile.file", logFilePath);
    //每天产生一个日志文件 prop.setProperty(
    "log4j.appender.toFile", "org.apache.log4j.DailyRollingFileAppender"); //服务器启动日志是追加,false:服务器启动后会生成日志文件把老的覆盖掉 prop.setProperty("log4j.appender.toFile.Append","true"); prop.setProperty("log4j.appender.toFile.Threshold", "info"); prop.setProperty("log4j.appender.toFile.layout", "org.apache.log4j.PatternLayout"); prop.setProperty("log4j.appender.toFile.layout.ConversionPattern", "[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n");
    //[2017-03-31 14:10:44] [ERROR] HttpResponseAnalyze:31 - Not equal //prop.setProperty("log4j.appender.toFile.layout.ConversionPattern", "[%d{yyyy-MM-dd HH:mm:ss}] [%p] %c{1}:%L - %m%n");
           //设置每天生成一个文件名后添加的名称,备份名称:年月日.log 
    prop.setProperty("log4j.appender.toFile.DatePattern","'.'yyyy-MM-dd'.log'");
    //使配置生效  PropertyConfigurator.configure(prop); } }

    2.2 调用

    import org.apache.log4j.Logger;
    
    public class TestLog {
        static Logger logger = Logger.getLogger(TestLog.class.getName());
        
        public static void main(String[] args)  {        
            LogConfiguration.initLog("D:\log\result.log");
            logger.info("log info");
            logger.warn("log warn");
            logger.error("log error");
            
            try {
            Thread.sleep(2000);
            }
            catch(Exception ex)
            {}
            
            logger.info("log1 info");
            logger.warn("log1 warn");
            logger.error("log1 error");        
        }
    }

    2.3 结果

    输出到Ecliplse的Console界面和文件D:log esult.log中,内容如下:

    [2016-12-14 16:03:34] [INFO] log info
    [2016-12-14 16:03:34] [WARN] log warn
    [2016-12-14 16:03:34] [ERROR] log error
    [2016-12-14 16:03:36] [INFO] log1 info
    [2016-12-14 16:03:36] [WARN] log1 warn
    [2016-12-14 16:03:36] [ERROR] log1 error

    另外,由于配置了每天生成一个备份,系统时间切一天后日后,再运行,原先的result.log会变成result.log.2016-12-13.log,新的日志会重新放到新建的日志文件result.log

    3 使用Properties文件配置并调用log


     返回

    3.1 文件配置log4j.properties

    log4j.rootLogger=INFO, toConsole, toFile 
    log4j.appender.file.encoding=UTF-8
    
    log4j.appender.toConsole=org.apache.log4j.ConsoleAppender 
    log4j.appender.toConsole.Target=System.out  
    log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout 
    log4j.appender.toConsole.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n 
      
    log4j.appender.toFile.file=D:\log\result.log 
    #Daily one log file
    log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender 
    log4j.appender.toFile.Append=true  
    log4j.appender.toFile.Threshold=info 
    log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
    log4j.appender.toFile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
    log4j.appender.toFile.DatePattern='.'yyyy-MM-dd'.log'

    3.2 调用

    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    public class TestLog {
        static Logger logger = Logger.getLogger(TestLog.class.getName());
        
        public static void main(String[] args)  {        
            PropertyConfigurator.configure( "D:\Users\...\config\log4j.properties" );
            logger.info("log info");
            logger.warn("log warn");
            logger.error("log error");
            
            try {
            Thread.sleep(2000);
            }
            catch(Exception ex)
            {}
            
            logger.info("log1 info");
            logger.warn("log1 warn");
            logger.error("log1 error");            
        }
    }

    3.3 结果

    和上面一致

    4 按输出级别的种类保存内容到不同目的地


     返回

    从高到低:ERROR、WARN、INFO、DEBUG

    • ERROR 为严重错误 主要是程序的错误
    • WARN 为一般警告,比如session丢失
    • INFO 为一般要显示的信息,比如登录登出
    • DEBUG 为程序的调试信息

    4.1 文件配置log4j.properties

    log4j.rootLogger=INFO, toConsole 
    log4j.appender.file.encoding=UTF-8
    
    log4j.appender.toConsole=org.apache.log4j.ConsoleAppender 
    log4j.appender.toConsole.Target=System.out  
    log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout 
    log4j.appender.toConsole.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n 
      
      
    log4j.logger.myError=ERROR, toFile   
    log4j.appender.toFile.file=D:\log\Errors.log 
    #Daily one log file
    log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender 
    log4j.appender.toFile.Append=true  
    log4j.appender.toFile.Threshold=info 
    log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
    log4j.appender.toFile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
    log4j.appender.toFile.DatePattern='.'yyyy-MM-dd'.log'

    4.2 调用

    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    public class TestLog {
        static Logger logger = Logger.getLogger(TestLog.class.getName());
        static Logger errorLogger=Logger.getLogger("myError");
        
        public static void main(String[] args)  {        
            PropertyConfigurator.configure( "D:\Users\...\config\log4j.properties" );
            logger.info("log info");
            logger.warn("log warn");
            logger.error("log error");
    
            errorLogger.info("myError info");
            errorLogger.warn("myError warn");
            errorLogger.error("myError error");
        }
    }

    4.3 结果

    Eclipse的Console界面

    [2016-12-13 17:45:06] [INFO] log info
     [2016-12-13 17:45:06] [WARN] log warn
     [2016-12-13 17:45:06] [ERROR] log error
     [2016-12-13 17:45:06] [ERROR] myError error

    Errors.log

    [2016-12-13 17:45:06] [ERROR] myError error

    参考

    [1] log4j.properties 的使用详解

    [2] log4j.properties log4j.xml 路径问题

    [3] log4j属性文件 每天产生一个日志文件 

    [4] log4j简单案例

    //设置每天生成一个文件名后添加的名称,备份名称:年月日.log
  • 相关阅读:
    日期多选插件Kalendae.js
    解决iReport打不开的一种方法
    Hibernate不能建表的问题
    【JAVA】虚拟机指令集
    解决jquery操作checkbox火狐下第二次无法勾选问题
    关于Java异常一段很有意思的代码
    C#中Winform程序中如何实现多维表头【不通过第三方报表程序】
    【转】C#中WinForm程序退出方法技巧总结
    为CentOS安装yum源
    Rsync CentOS 7 下安装
  • 原文地址:https://www.cnblogs.com/Ming8006/p/6170428.html
Copyright © 2020-2023  润新知