吐槽几句,log4j的坑啊.... (1)CLASSPATH中不能有多个log4j的版本本,否则有有奇形怪状的NoSuchMethod, NoSuchFiled, NoClassDefineFound等异常。明明是太多了,还告诉你没有 (2)与slf4j的搭建,必须版本一致,如slf4j-1.7.2对应log4j-1.2.17 (3)配置文件啊,如果你引用的第三方包有log4j.properties,而又没有提供给你编辑,那恭喜你,慢慢调吧。把log4j的配置写入代码吧,不要用配置文件了

使用slf4j作为日志系统时,由于slf4j只是一个接口,它需要一个具体实现来执行。

具体参考http://blog.csdn.net/jediael_lu/article/details/43854571

由于slf4j统一了API接口,因此,若log4j实现来日志输出,则只需要设置配置文件的内容即可,log4j.properties中的配置可以分成2类:

第一类定义了日志的输出级别,以及以输出目标(appender)

第二类定义了appender的具体属性。

一、日志输出级别、输出目标(appender)的定义

1、log4j.rootLogger=日志级别,appender1, appender2, ….
示例:log4j.rootLogger=INFO,stdout,DRFA
(1)设置整个工程的日志默认级别,以及日志的输出目标
(2)日志级别为ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF,不区分大小写。示例中的日志级别为INFO,即只有大于或者等于INFO的日志才会被记录。
(3)日志的输出目标有以下几类:

  • ConsoleAppender(控制台)
  • FileAppender(文件)
  • DailyRollingFileAppender(每天产生一个日志文件
  • RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)
  • WriteAppender(将日志信息以流格式发送到任意指定的地方)
  • JDBCAppender(将日志信息保存到数据库中)

示例中使用的是DailyRollingFileAppender。下一部分会详细介绍每个appender中的具体属性。

2、log4j.logger.org.mypackage[.MyClass]=日志级别,appender1, appender2, ….
示例:log4j.logger.org.apache.nutch.crawl.GeneratorJob=INFO,cmdstdout
(1)log4j.rootLogger 中的设置对整个工程生效,若只想对某个包或者某个类生效,可以使用本配置项。

3、log4j.threshold=ALL
In fact , threshold's level should be larger or equals rootlogger's level.
usually, thresold can be used to define some special appender's filter log level.
eg:
there are two appenders: console and file,and the level is warn, if you just only want the error message be written to file, so you can use "file.threshold=error" to filter out the "warn" message.

二、具体某个appender的设置
1、log4j.appender.appender1.File=文件目录及文件
2、log4j.appender.appender1.MaxFileSize=最大文件大小
3、log4j.appender.appender1.MaxBackupIndex=备份文件个数

其中,appender1是在log4j.rootlogger或者具体包日志中定义过的;
    文件目录及文件,例如,/home/admin/logs/hutudan.log
    最大文件大小,例如,100KB
    备份文件个数,例如,1

4、log4j.appender.ServerDailyRollingFile.DatePattern=日志后缀格式

例如,'.'yyyy-MM-dd

5、log4j.appender.appender1.layout=org.apache.log4j.日志布局格式

HTMLLayout(以HTML表格形式布局)
    SimpleLayout(包含日志信息的级别和信息字符串)
    TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
    PatternLayout(可以灵活的指定布局格式,常用)

6、log4j.appender.appender1.layout.ConversionPattern=日志输出格式

例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
    %c 输出日志信息所属的类的全名
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
    %f 输出日志信息所属的类的类名
    %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
    %m 输出代码中指定的信息,如log(message)中的message
    %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
    %r 输出自应用启动到输出该日志信息所耗费的毫秒数
    %t 输出产生该日志事件的线程名
    可参考:http://blog.sina.com.cn/s/blog_4e4dd5570100qowy.html

7、log4j.appender.ServerDailyRollingFile.Append=true

在后面追加

三、示例:Nutch中的log4j.properties

  1. # Define some default values that can be overridden by system properties
  2. hadoop.log.dir=.
  3. hadoop.log.file=hadoop.log
  4.  
  5. # RootLogger - DailyRollingFileAppender
  6. log4j.rootLogger=INFO,DRFA
  7.  
  8. # Logging Threshold
  9. log4j.threshold=ALL
  10.  
  11. #special logging requirements for some commandline tools
  12. log4j.logger.org.apache.nutch.crawl.Crawl=INFO,cmdstdout
  13. log4j.logger.org.apache.nutch.crawl.InjectorJob=INFO,cmdstdout
  14. log4j.logger.org.apache.nutch.host.HostInjectorJob=INFO,cmdstdout
  15. log4j.logger.org.apache.nutch.crawl.GeneratorJob=INFO,cmdstdout
  16. log4j.logger.org.apache.nutch.crawl.DbUpdaterJob=INFO,cmdstdout
  17. log4j.logger.org.apache.nutch.host.HostDbUpdateJob=INFO,cmdstdout
  18. log4j.logger.org.apache.nutch.fetcher.FetcherJob=INFO,cmdstdout
  19. log4j.logger.org.apache.nutch.parse.ParserJob=INFO,cmdstdout
  20. log4j.logger.org.apache.nutch.indexer.IndexingJob=INFO,cmdstdout
  21. log4j.logger.org.apache.nutch.indexer.DeleteDuplicates=INFO,cmdstdout
  22. log4j.logger.org.apache.nutch.indexer.CleaningJob=INFO,cmdstdout
  23. log4j.logger.org.apache.nutch.crawl.WebTableReader=INFO,cmdstdout
  24. log4j.logger.org.apache.nutch.host.HostDbReader=INFO,cmdstdout
  25. log4j.logger.org.apache.nutch.parse.ParserChecker=INFO,cmdstdout
  26. log4j.logger.org.apache.nutch.indexer.IndexingFiltersChecker=INFO,cmdstdout
  27. log4j.logger.org.apache.nutch.plugin.PluginRepository=WARN
  28. log4j.logger.org.apache.nutch.api.NutchServer=INFO,cmdstdout
  29.  
  30. log4j.logger.org.apache.nutch=INFO
  31. log4j.logger.org.apache.hadoop=WARN
  32. log4j.logger.org.apache.zookeeper=WARN
  33. log4j.logger.org.apache.gora=WARN
  34.  
  35. #
  36. # Daily Rolling File Appender
  37. #
  38.  
  39. log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
  40. log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
  41.  
  42. # Rollver at midnight
  43. log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
  44.  
  45. # 30-day backup
  46. #log4j.appender.DRFA.MaxBackupIndex=30
  47. log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
  48.  
  49. # Pattern format: Date LogLevel LoggerName LogMessage
  50. log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
  51. # Debugging Pattern format: Date LogLevel LoggerName (FileName:MethodName:LineNo) LogMessage
  52. #log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
  53.  
  54. #
  55. # stdout
  56. # Add *stdout* to rootlogger above if you want to use this
  57. #
  58.  
  59. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  60. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  61. log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
  62.  
  63. #
  64. # plain layout used for commandline tools to output to console
  65. #
  66. log4j.appender.cmdstdout=org.apache.log4j.ConsoleAppender
  67. log4j.appender.cmdstdout.layout=org.apache.log4j.PatternLayout
  68. log4j.appender.cmdstdout.layout.ConversionPattern=%m%n

基本步骤如下:

1、指定log4j.rootLogger

  1. log4j.rootLogger=INFO,DRFA

【可选】为单独某个包或者类指定日志级别及appender

  1. #special logging requirements for some commandline tools
  2. log4j.logger.org.apache.nutch.crawl.Crawl=INFO,cmdstdout
  3. log4j.logger.org.apache.nutch.crawl.InjectorJob=INFO,cmdstdout
  4. log4j.logger.org.apache.nutch.host.HostInjectorJob=INFO,cmdstdout
  5. log4j.logger.org.apache.nutch.crawl.GeneratorJob=INFO,cmdstdout
  6. log4j.logger.org.apache.nutch.crawl.DbUpdaterJob=INFO,cmdstdout
  7. log4j.logger.org.apache.nutch.host.HostDbUpdateJob=INFO,cmdstdout
  8. log4j.logger.org.apache.nutch.fetcher.FetcherJob=INFO,cmdstdout
  9. log4j.logger.org.apache.nutch.parse.ParserJob=INFO,cmdstdout
  10. log4j.logger.org.apache.nutch.indexer.IndexingJob=INFO,cmdstdout
  11. log4j.logger.org.apache.nutch.indexer.DeleteDuplicates=INFO,cmdstdout
  12. log4j.logger.org.apache.nutch.indexer.CleaningJob=INFO,cmdstdout
  13. log4j.logger.org.apache.nutch.crawl.WebTableReader=INFO,cmdstdout
  14. log4j.logger.org.apache.nutch.host.HostDbReader=INFO,cmdstdout
  15. log4j.logger.org.apache.nutch.parse.ParserChecker=INFO,cmdstdout
  16. log4j.logger.org.apache.nutch.indexer.IndexingFiltersChecker=INFO,cmdstdout
  17. log4j.logger.org.apache.nutch.plugin.PluginRepository=WARN
  18. log4j.logger.org.apache.nutch.api.NutchServer=INFO,cmdstdout
  19.  
  20. log4j.logger.org.apache.nutch=INFO
  21. log4j.logger.org.apache.hadoop=WARN
  22. log4j.logger.org.apache.zookeeper=WARN
  23. log4j.logger.org.apache.gora=WARN

因此,nutch相关的包大多数日志均被重新指定了指向cmdstdout,而其它日志,如hadoop, zookeeper, gora只是重新定义了日志级别,而未重新定义appender,因此它们日志将被指向DRFA。

【可选】指定threshold

  1. # Logging Threshold
  2. log4j.threshold=ALL

2、指定某个appender的属性

cmstd:

  1. #
  2. # plain layout used for commandline tools to output to console
  3. #
  4. log4j.appender.cmdstdout=org.apache.log4j.ConsoleAppender
  5. log4j.appender.cmdstdout.layout=org.apache.log4j.PatternLayout
  6. log4j.appender.cmdstdout.layout.ConversionPattern=%m%n

%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n

DRFA:

  1. #
  2. # Daily Rolling File Appender
  3. #
  4.  
  5. log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
  6. log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
  7.  
  8. # Rollver at midnight
  9. log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
  10.  
  11. # 30-day backup
  12. #log4j.appender.DRFA.MaxBackupIndex=30
  13. log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
  14.  
  15. # Pattern format: Date LogLevel LoggerName LogMessage
  16. log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
  17. # Debugging Pattern format: Date LogLevel LoggerName (FileName:MethodName:LineNo) LogMessage
  18. #log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n

输出文件可以用变量指定,如上面的:

  1. log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}

版权声明:本文为博主原创文章,未经博主允许不得转载。

log4j配置文件及nutch中的日志配置 分类: B1_JAVA 2015-02-17 10:58 483人阅读 评论(0) 收藏的更多相关文章

  1. Ubuntu vim+ ctags(包含系统函数) + taglist 配置 分类: vim ubuntu 2015-06-09 18:19 195人阅读 评论(0) 收藏

    阅读大型代码,我们经常需要打开很多的代码文件,搜索各种定义.windows下用惯了ide的朋友,转战Linux的时候可能会觉得很难受,找不到合适的阅读工具.其实万能的vim就可以实现.下面介绍一下vi ...

  2. C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏

    1.     概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线 ...

  3. C/C++中const的用法 分类: C/C++ 2015-07-05 00:43 85人阅读 评论(0) 收藏

    const是C语言的关键字,经C++进行扩充,变得功能强大,用法复杂.const用于定义一个常变量(只读变量),当const与指针,引用,函数等结合起来使用时,情况会变得复杂的多.下面将从五个方面总结 ...

  4. log4j配置文件及nutch中的日志配置

    使用slf4j作为日志系统时,由于slf4j只是一个接口,它需要一个具体实现来执行. 具体参考http://blog.csdn.net/jediael_lu/article/details/43854 ...

  5. Nutch+Hadoop集群搭建 分类: H3_NUTCH 2015-01-18 10:55 362人阅读 评论(0) 收藏

    转载自:http://www.open-open.com/lib/view/open1328670771405.html 1.Apache Nutch    Apache Nutch是一个用于网络搜索 ...

  6. 【solr专题之二】配置文件:solr.xml solrConfig.xml schema.xml 分类: H4_SOLR/LUCENCE 2014-07-23 21:30 1959人阅读 评论(0) 收藏

    1.关于默认搜索域 If you are using the Lucene query parser, queries that don't specify a field name will use ...

  7. Http,Https(SSL)的Url绝对路径,相对路径解决方案Security Switch 4.2的配置和使用 分类: ASP.NET 2014-11-05 12:51 97人阅读 评论(0) 收藏

    下载地址1:https://securityswitch.googlecode.com/files/SecuritySwitch%20v4.2.0.0%20-%20Binary.zip 下载地址2:h ...

  8. 树莓派入手(烧写系统,调整分区,配置Java环境,串口GPS配置) 分类: Raspberry Pi 2015-04-09 21:13 145人阅读 评论(0) 收藏

    原来的tf卡无故启动不起来,检查发现其文件系统分区使用率为0%. 数据全部丢失!!!!! 血的教训告诉我们备份文件系统的重要性,一切需要重头来.... 烧录系统 安装系统有两种方式, NOOBS工具安 ...

  9. iOS中UITextField 使用全面解析 分类: ios技术 2015-04-10 14:37 153人阅读 评论(0) 收藏

    //初始化textfield并设置位置及大小   UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 13 ...

随机推荐

  1. Spring Cloud学习笔记【三】服务消费者Feign

    Feign 是一个声明式的 Web Service 客户端,它的目的就是让 Web Service 调用更加简单.它整合了 Ribbon 和 Hystrix,从而让我们不再需要显式地使用这两个组件.F ...

  2. Nginx+tomcat+ssl免费证书配置

    0.说明 本文说描写叙述的方式是用nginx的443重定向到tomcat的8443,nginx的80port重定到tomcat的8080: 乱入:个人标记:caicongyang 1.nginx安装 ...

  3. js中由undefined说起

    typeof()函数 返回的是字符串.有六种可能:"number"."string"."boolean"."object" ...

  4. elasticsearch index之Translog

    跟大多数分布式系统一样,es也通过临时写入写操作来保证数据安全.因为lucene索引过程中,数据会首先据缓存在内存中直到达到一个量(文档数或是占用空间大小)才会写入到磁盘.这就会带来一个风险,如果在写 ...

  5. 具有可视化的功能的一款开源软件Gource

    今天为大家介绍一个非常有趣儿的开源软件,Gource可以将代码版本控制系统里面的日志全部可视化,也就是说可以看见每个成员在系统里面提交代码的行为,Gource目前支持git,hg,svn. 650) ...

  6. HDU 4731 Minimum palindrome 打表找规律

    http://acm.hdu.edu.cn/showproblem.php?pid=4731 就做了两道...也就这题还能发博客了...虽然也是水题 先暴力DFS打表找规律...发现4个一组循环节.. ...

  7. Nginx系列(一)--nginx是什么?

    一.介绍 Nginx是一个高性能的HTTP和反向代理server,也是一个IMAP/POP3/SMTP代理server. Nginx是一款轻量级的Webserver/反向代理server以及电子邮件代 ...

  8. 有关cascade的结构体

    /* internal cascade classifier */ typedef struct CvCascadeHaarClassifier { CV_INT_HAAR_CLASSIFIER_FI ...

  9. softInputMode- 软件盘的设置

    今天遇到一个问题,就是软件盘弹出来以后,会把之前的布局界面整个的挤到屏幕的外面,而且按下返回建以后,这个软件盘占据的空间会留下一个黑色的背景.在网上查找了很多的方法,刚开始都是说,如下方法 <a ...

  10. linux设置tab键的宽度为4

    先cd 到~目录 ~$ cd ~$ vi .vimrc set nu