log4j 父logger和子logger

** 定义子logger其目的就是能够在某一范围内(某一个class或者某一个package)下面,日志的输出方式与其他地方的日志输出方式不同。**

log4j.properties

[java] view plain copy

  1. log4j.rootLogger = DEBUG,stdout,D

  2. log4j.debug=ture //是否打开log4j的内部日志打印

  3. (ConsoleAppender:控制台打印)

  4. log4j.appender.stdout = org.apache.log4j.ConsoleAppender

  5. log4j.appender.stdout.Target = System.out

  6. log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

  7. log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

  8. (DailyRollingFileAppender)

  9. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender

  10. log4j.appender.D.File = G://logs/log.log

  11. log4j.appender.D.Append = true

  12. log4j.appender.D.Threshold = DEBUG

  13. log4j.appender.D.layout = org.apache.log4j.PatternLayout

  14. log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

  15. (mail)

  16. log4j.appender.mail=org.apache.log4j.net.SMTPAppender

  17. log4j.appender.mail.Threshold=DEBUG

  18. log4j.appender.mail.BufferSize=10

  19. log4j.appender.mail.From = [email protected]

  20. log4j.appender.mail.SMTPHost=smtp.qq.com

  21. log4j.appender.mail.Subject=Log4J Message

  22. log4j.appender.mail.SMTPUsername=123

  23. log4j.appender.mail.SMTPPassword=xxx

  24. log4j.appender.mail.To= [email protected]

  25. log4j.appender.mail.layout=org.apache.log4j.PatternLayout

  26. log4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

  27. 配置子logger,目的就是控制一定范围内的日志输出,比如这里的子logger是控制cn.server.test包下面的所有类的日志输出,其父logger就是rootLogger

  28. log4j.logger.cn.server.test=error,E

  29. log4j.additivity.cn.server.test=false //

  30. log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

  31. log4j.appender.E.File =G://logs/error.log

  32. log4j.appender.E.Append = true

  33. log4j.appender.E.Threshold = ERROR

  34. log4j.appender.E.layout = org.apache.log4j.PatternLayout

  35. log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

     **配置子logger,目的就是控制一定范围内的日志输出,比如这里的子logger是控制cn.server.test包下面的所有类的日志输出,其父logger就是rootLogger。**
    

[java] view plain copy

  1. log4j.logger.cn.server.test=error,E

** 在cn.server.test包里面中使用**

[java] view plain copy

  1. Logger logger = Logger.getLogger(xxx.class)

得到logger对象,然后使用logger对象进行日志输入的时候,logger会根据xxx.class的全类名找到这里声明的子Logger

[plain] view plain copy

  1. log4j.logger.cn.server.test=error,E

在cn.server.test包外的类,也可以使用

[java] view plain copy

  1. Logger logger = Logger.getLogger("cn.server.test");

特别指定使用该子logger进行日志输出。
log4j的additivity属性: 表示子logger是否要在父logger的appender中输出日志,若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。

你可能感兴趣的:(log4j 父logger和子logger)