Log4j經常使用配置及使用

Log4j經常使用配置及使用

2016-12-14java

目錄apache

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依賴


 返回session

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

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

 

2 使用代碼配置並調用log


 返回maven

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\result.log中,內容以下:ide

[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.logspa

3 使用Properties文件配置並調用log


 返回.net

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
相關文章
相關標籤/搜索