<microrock>

microrock

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

基本使用方法:

Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。

日志信息的优先级

org.apache.log4j.Level类提供以下级别,但也可以通过Level类的子类自定义级别。

Level描述
ALL 各级包括自定义级别
DEBUG 指定细粒度信息事件是最有用的应用程序调试
ERROR 错误事件可能仍然允许应用程序继续运行
FATAL 指定非常严重的错误事件,这可能导致应用程序中止
INFO 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息
OFF 这是最高等级,为了关闭日志记录
TRACE 指定细粒度比DEBUG更低的信息事件
WARN 指定具有潜在危害的情况

日志级别是如何工作的?

级别p的级别使用q,在记录日志请求时,如果p>=q启用。这条规则是log4j的核心。它假设级别是有序的。对于标准级别它们关系如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。

下面的例子明确指出如何可以过滤所有的DEBUG和INFO消息。这个程序使用记录并执行setLevel(Level.X)方法来设置所需的日志记录级别。

这个例子将打印,除了调试和信息的所有消息:

import org.apache.log4j.*;

public class LogClass {
   private static org.apache.log4j.Logger log = Logger
                                    .getLogger(LogClass.class);
   public static void main(String[] args) {
      log.setLevel(Level.WARN);

      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

当编译并运行LogClass程序会产生以下结果:

Warn Message!
Error Message!
Fatal Message!

使用配置文件设置级别:

Log4j提供这些可以让程序员自由更改源代码,改变调试级别的配置级别是基于文件设置。

以下是上面的例子使用 log.setLevel(Level.WARN)方法的配置文件与上面的例子例子功能一样。

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = WARN, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

现在,使用下面的程序:

import org.apache.log4j.*;

public class LogClass {
   private static org.apache.log4j.Logger log = Logger
                                    .getLogger(LogClass.class);
   public static void main(String[] args) {
      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

现在,编译和运行上面的程序,得到以下结果在 /usr/home/log4j/log.out 文件:

Warn Message!
Error Message!
Fatal Message!
  1. <p>下面是配置文件log4j.properties</p>  
  2. <p></p>  
  3. <pre code_snippet_id="2005179" snippet_file_name="blog_20161124_2_572588" name="code" class="html">log4j.rootLogger= Console,Info,Warn, Error,Fatal  
  4.   
  5. #Console  
  6. log4j.appender.Console=org.apache.log4j.ConsoleAppender  
  7. log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
  8. log4j.appender.Console.Threshold = OFF    
  9.   
  10. #Info  
  11. log4j.appender.Info=com.xcinfo.cool.util.LogUtil  
  12. log4j.appender.Info.File=./cold_chain_log_info.log  
  13. log4j.appender.Info.layout=org.apache.log4j.PatternLayout  
  14. log4j.appender.Info.Threshold = INFO  
  15. log4j.appender.Info.File.DatePattern='.'yyyy-MM-dd'.log'  
  16.   
  17. #Warn  
  18. log4j.appender.Warn=com.xcinfo.cool.util.LogUtil  
  19. log4j.appender.Warn.File=./cold_chain_log_warn.log  
  20. log4j.appender.Warn.layout=org.apache.log4j.PatternLayout  
  21. log4j.appender.Warn.Threshold = DEBUG  
  22. log4j.appender.Warn.File.DatePattern='.'yyyy-MM-dd'.log'  
  23.   
  24. #Error  
  25. log4j.appender.Error=com.xcinfo.cool.util.LogUtil  
  26. log4j.appender.Error.File=./cold_chain_log_err.log  
  27. log4j.appender.Error.layout=org.apache.log4j.PatternLayout  
  28. log4j.appender.Error.Threshold = ERROR   
  29. log4j.appender.Error.File.DatePattern='.'yyyy-MM-dd'.log'  
  30.   
  31. #Fatal  
  32. log4j.appender.Fatal=com.xcinfo.cool.util.LogUtil  
  33. log4j.appender.Fatal.File=./cold_chain_log_fatal.log  
  34. log4j.appender.Fatal.layout=org.apache.log4j.PatternLayout  
  35. log4j.appender.Fatal.Threshold = FATAL  
  36. log4j.appender.Fatal.File.DatePattern='.'yyyy-MM-dd'.log'  
  37.   
  38.   
  39. </pre><br>  
  40. 配置简要说明:<br>  
  41. <br>  
  42. log4j.appender.test.File=./xc_app_log_error.log    "表示输出文件路径"<br>  
  43. log4j.appender.RollingFile.File.DatePattern='.'yyyy-MM-dd'.log'   <br>  
  44. 表示每天生成一个日志文件,当天的日志文件会保存在xc_app_log_error.log文件中<br>  
  45. 到了第二天,会将昨天的日志文件xc_app_log_error.log保存为xc_app_log_error.'yyyy-MM-dd'.log',并将第二天的文件保存在新的<br>  
  46. xc_app_log_error.log文件中,以此类推每过一天就追加一天的日志文件<br>  
  47. <br>  
  48. <p></p>  
  49. <p>log4j.appender.RollingFile.Threshold =日志级别   分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG<br>  
  50. <br>  
  51. <br>  
  52. static Level DEBUG<br>  
  53. DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。<br>  
  54. <br>  
  55. static Level INFO<br>  
  56. INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。<br>  
  57. <br>  
  58. static Level WARN<br>  
  59. WARN level表明会出现潜在错误的情形。<br>  
  60. <br>  
  61. static Level ERROR<br>  
  62. ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。<br>  
  63. <br>  
  64. static Level FATAL<br>  
  65. FATAL level指出每个严重的错误事件将会导致应用程序的退出。<br>  
  66. <br>  
  67. 另外,还有两个可用的特别的日志记录级别: (以下描述来自log4j API http://jakarta.apache.org/log4j/docs/api/index.html):<br>  
  68. static Level ALL<br>  
  69. ALL Level是最低等级的,用于打开所有日志记录。<br>  
  70. <br>  
  71. static Level OFF<br>  
  72. OFF Level是最高等级的,用于关闭所有日志记录。<br>  
  73. </p>  
  74. <p><br>  
  75. </p>  
  76. <p><br>  
  77. </p>  
  78. <p><br>  
  79. <br>  
  80. <br>  
  81. </p>  
  82. <pre></pre>  
  83. <div style="top:1474px"><br>  
  84. </div>  
  85. <div style="top:1474px"><br>  
  86.    <br>  
  87. </div>  
  88. <div style="top:1532px"><br>  
  89. </div>  
  90. <div style="top:0px"><br> 
posted on 2017-05-19 09:21  microrock  阅读(186)  评论(0编辑  收藏  举报