加载中...

Log4j常用配置及使用


1 添加log4j依赖

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

  1. <dependency>
  2. <groupId>log4j</groupId>
  3. <artifactId>log4j</artifactId>
  4. <version>1.2.16</version>
  5. <scope>provided</scope>
  6. </dependency>

2 使用代码配置并调用log

2.1 代码配置LogConfiguration.java

  1. import java.util.Properties;
  2. import org.apache.log4j.PropertyConfigurator;
  3.  
  4. public class LogConfiguration {
  5. public static void initLog(String logFilePath){
  6. //声明日志文件存储路径以及文件名、格式
  7. Properties prop = new Properties();
  8. //配置日志输出的格式
  9. prop.setProperty("log4j.rootLogger","info, toConsole, toFile");
  10. prop.setProperty("log4j.appender.file.encoding","UTF-8" );
  11. prop.setProperty("log4j.appender.toConsole","org.apache.log4j.ConsoleAppender");
  12. prop.setProperty("log4j.appender.toConsole.Target","System.out");
  13. prop.setProperty("log4j.appender.toConsole.layout","org.apache.log4j.PatternLayout ");
  14. prop.setProperty("log4j.appender.toConsole.layout.ConversionPattern","[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n");
  15. prop.setProperty("log4j.appender.toFile.file", logFilePath);
  16. //每天产生一个日志文件
  17. prop.setProperty("log4j.appender.toFile", "org.apache.log4j.DailyRollingFileAppender");
  18. //服务器启动日志是追加,false:服务器启动后会生成日志文件把老的覆盖掉
  19. prop.setProperty("log4j.appender.toFile.Append","true");
  20. prop.setProperty("log4j.appender.toFile.Threshold", "info");
  21. prop.setProperty("log4j.appender.toFile.layout", "org.apache.log4j.PatternLayout");
  22. prop.setProperty("log4j.appender.toFile.layout.ConversionPattern", "[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n");
  23. //设置每天生成一个文件名后添加的名称,备份名称:年月日.log
  24. prop.setProperty("log4j.appender.toFile.DatePattern","'.'yyyy-MM-dd'.log'");
  25.  
  26. //使配置生效
  27. PropertyConfigurator.configure(prop);
  28. }
  29. }

2.2 调用

  1. import org.apache.log4j.Logger;
  2.  
  3. public class TestLog {
  4. static Logger logger = Logger.getLogger(TestLog.class.getName());
  5. public static void main(String[] args) {
  6. LogConfiguration.initLog("D:\\log\\result.log");
  7. logger.info("log info");
  8. logger.warn("log warn");
  9. logger.error("log error");
  10. try {
  11. Thread.sleep(2000);
  12. }
  13. catch(Exception ex)
  14. {}
  15. logger.info("log1 info");
  16. logger.warn("log1 warn");
  17. logger.error("log1 error");
  18. }
  19. }

2.3 结果

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

  1. [2016-12-14 16:03:34] [INFO] log info
  2. [2016-12-14 16:03:34] [WARN] log warn
  3. [2016-12-14 16:03:34] [ERROR] log error
  4. [2016-12-14 16:03:36] [INFO] log1 info
  5. [2016-12-14 16:03:36] [WARN] log1 warn
  6. [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

  1. log4j.rootLogger=INFO, toConsole, toFile
  2. log4j.appender.file.encoding=UTF-8
  3.  
  4. log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
  5. log4j.appender.toConsole.Target=System.out
  6. log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
  7. log4j.appender.toConsole.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
  8. log4j.appender.toFile.file=D:\\log\\result.log
  9. #Daily one log file
  10. log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender
  11. log4j.appender.toFile.Append=true
  12. log4j.appender.toFile.Threshold=info
  13. log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
  14. log4j.appender.toFile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
  15. log4j.appender.toFile.DatePattern='.'yyyy-MM-dd'.log'

3.2 调用

  1. import org.apache.log4j.Logger;
  2. import org.apache.log4j.PropertyConfigurator;
  3.  
  4. public class TestLog {
  5. static Logger logger = Logger.getLogger(TestLog.class.getName());
  6. public static void main(String[] args) {
  7. PropertyConfigurator.configure( "D:\\Users\\...\\config\\log4j.properties" );
  8. logger.info("log info");
  9. logger.warn("log warn");
  10. logger.error("log error");
  11. try {
  12. Thread.sleep(2000);
  13. }
  14. catch(Exception ex)
  15. {}
  16. logger.info("log1 info");
  17. logger.warn("log1 warn");
  18. logger.error("log1 error");
  19. }
  20. }

3.3 结果

和上面一致

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

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

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

4.1 文件配置log4j.properties

  1. log4j.rootLogger=INFO, toConsole
  2. log4j.appender.file.encoding=UTF-8
  3.  
  4. log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
  5. log4j.appender.toConsole.Target=System.out
  6. log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
  7. log4j.appender.toConsole.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
  8. log4j.logger.myError=ERROR, toFile
  9. log4j.appender.toFile.file=D:\\log\\Errors.log
  10. #Daily one log file
  11. log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender
  12. log4j.appender.toFile.Append=true
  13. log4j.appender.toFile.Threshold=info
  14. log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
  15. log4j.appender.toFile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
  16. log4j.appender.toFile.DatePattern='.'yyyy-MM-dd'.log'

4.2 调用

  1. import org.apache.log4j.Logger;
  2. import org.apache.log4j.PropertyConfigurator;
  3.  
  4. public class TestLog {
  5. static Logger logger = Logger.getLogger(TestLog.class.getName());
  6. static Logger errorLogger=Logger.getLogger("myError");
  7. public static void main(String[] args) {
  8. PropertyConfigurator.configure( "D:\\Users\\...\\config\\log4j.properties" );
  9. logger.info("log info");
  10. logger.warn("log warn");
  11. logger.error("log error");
  12.  
  13. errorLogger.info("myError info");
  14. errorLogger.warn("myError warn");
  15. errorLogger.error("myError error");
  16. }
  17. }

4.3 结果

Eclipse的Console界面

  1. [2016-12-13 17:45:06] [INFO] log info
  2. [2016-12-13 17:45:06] [WARN] log warn
  3. [2016-12-13 17:45:06] [ERROR] log error
  4. [2016-12-13 17:45:06] [ERROR] myError error

Errors.log

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


还没有评论.