2016-12-14java
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 結果
參考服務器
返回session
maven的pom.xml文件中添加log4j依賴app
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> <scope>provided</scope> </dependency>
返回maven
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); } }
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"); } }
輸出到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
返回.net
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'
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"); } }
和上面一致調試
從高到低:ERROR、WARN、INFO、DEBUG
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'
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"); } }
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
[2] log4j.properties log4j.xml 路徑問題
[4] log4j簡單案例
//設置天天生成一個文件名後添加的名稱,備份名稱:年月日.log