log4j配置文件及nutch中的日志配置 分类: B1_JAVA 2015-02-17 10:58 483人阅读 评论(0) 收藏
吐槽几句,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
- # Define some default values that can be overridden by system properties
- hadoop.log.dir=.
- hadoop.log.file=hadoop.log
- # RootLogger - DailyRollingFileAppender
- log4j.rootLogger=INFO,DRFA
- # Logging Threshold
- log4j.threshold=ALL
- #special logging requirements for some commandline tools
- log4j.logger.org.apache.nutch.crawl.Crawl=INFO,cmdstdout
- log4j.logger.org.apache.nutch.crawl.InjectorJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.host.HostInjectorJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.crawl.GeneratorJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.crawl.DbUpdaterJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.host.HostDbUpdateJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.fetcher.FetcherJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.parse.ParserJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.indexer.IndexingJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.indexer.DeleteDuplicates=INFO,cmdstdout
- log4j.logger.org.apache.nutch.indexer.CleaningJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.crawl.WebTableReader=INFO,cmdstdout
- log4j.logger.org.apache.nutch.host.HostDbReader=INFO,cmdstdout
- log4j.logger.org.apache.nutch.parse.ParserChecker=INFO,cmdstdout
- log4j.logger.org.apache.nutch.indexer.IndexingFiltersChecker=INFO,cmdstdout
- log4j.logger.org.apache.nutch.plugin.PluginRepository=WARN
- log4j.logger.org.apache.nutch.api.NutchServer=INFO,cmdstdout
- log4j.logger.org.apache.nutch=INFO
- log4j.logger.org.apache.hadoop=WARN
- log4j.logger.org.apache.zookeeper=WARN
- log4j.logger.org.apache.gora=WARN
- #
- # Daily Rolling File Appender
- #
- log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
- # Rollver at midnight
- log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
- # 30-day backup
- #log4j.appender.DRFA.MaxBackupIndex=30
- log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
- # Pattern format: Date LogLevel LoggerName LogMessage
- log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
- # Debugging Pattern format: Date LogLevel LoggerName (FileName:MethodName:LineNo) LogMessage
- #log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
- #
- # stdout
- # Add *stdout* to rootlogger above if you want to use this
- #
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
- #
- # plain layout used for commandline tools to output to console
- #
- log4j.appender.cmdstdout=org.apache.log4j.ConsoleAppender
- log4j.appender.cmdstdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.cmdstdout.layout.ConversionPattern=%m%n
基本步骤如下:
1、指定log4j.rootLogger
- log4j.rootLogger=INFO,DRFA
【可选】为单独某个包或者类指定日志级别及appender
- #special logging requirements for some commandline tools
- log4j.logger.org.apache.nutch.crawl.Crawl=INFO,cmdstdout
- log4j.logger.org.apache.nutch.crawl.InjectorJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.host.HostInjectorJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.crawl.GeneratorJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.crawl.DbUpdaterJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.host.HostDbUpdateJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.fetcher.FetcherJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.parse.ParserJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.indexer.IndexingJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.indexer.DeleteDuplicates=INFO,cmdstdout
- log4j.logger.org.apache.nutch.indexer.CleaningJob=INFO,cmdstdout
- log4j.logger.org.apache.nutch.crawl.WebTableReader=INFO,cmdstdout
- log4j.logger.org.apache.nutch.host.HostDbReader=INFO,cmdstdout
- log4j.logger.org.apache.nutch.parse.ParserChecker=INFO,cmdstdout
- log4j.logger.org.apache.nutch.indexer.IndexingFiltersChecker=INFO,cmdstdout
- log4j.logger.org.apache.nutch.plugin.PluginRepository=WARN
- log4j.logger.org.apache.nutch.api.NutchServer=INFO,cmdstdout
- log4j.logger.org.apache.nutch=INFO
- log4j.logger.org.apache.hadoop=WARN
- log4j.logger.org.apache.zookeeper=WARN
- log4j.logger.org.apache.gora=WARN
因此,nutch相关的包大多数日志均被重新指定了指向cmdstdout,而其它日志,如hadoop, zookeeper, gora只是重新定义了日志级别,而未重新定义appender,因此它们日志将被指向DRFA。
【可选】指定threshold
- # Logging Threshold
- log4j.threshold=ALL
2、指定某个appender的属性
cmstd:
- #
- # plain layout used for commandline tools to output to console
- #
- log4j.appender.cmdstdout=org.apache.log4j.ConsoleAppender
- log4j.appender.cmdstdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.cmdstdout.layout.ConversionPattern=%m%n
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n
DRFA:
- #
- # Daily Rolling File Appender
- #
- log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
- # Rollver at midnight
- log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
- # 30-day backup
- #log4j.appender.DRFA.MaxBackupIndex=30
- log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
- # Pattern format: Date LogLevel LoggerName LogMessage
- log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
- # Debugging Pattern format: Date LogLevel LoggerName (FileName:MethodName:LineNo) LogMessage
- #log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
输出文件可以用变量指定,如上面的:
- log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
版权声明:本文为博主原创文章,未经博主允许不得转载。
log4j配置文件及nutch中的日志配置 分类: B1_JAVA 2015-02-17 10:58 483人阅读 评论(0) 收藏的更多相关文章
- Ubuntu vim+ ctags(包含系统函数) + taglist 配置 分类: vim ubuntu 2015-06-09 18:19 195人阅读 评论(0) 收藏
阅读大型代码,我们经常需要打开很多的代码文件,搜索各种定义.windows下用惯了ide的朋友,转战Linux的时候可能会觉得很难受,找不到合适的阅读工具.其实万能的vim就可以实现.下面介绍一下vi ...
- C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏
1. 概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线 ...
- C/C++中const的用法 分类: C/C++ 2015-07-05 00:43 85人阅读 评论(0) 收藏
const是C语言的关键字,经C++进行扩充,变得功能强大,用法复杂.const用于定义一个常变量(只读变量),当const与指针,引用,函数等结合起来使用时,情况会变得复杂的多.下面将从五个方面总结 ...
- log4j配置文件及nutch中的日志配置
使用slf4j作为日志系统时,由于slf4j只是一个接口,它需要一个具体实现来执行. 具体参考http://blog.csdn.net/jediael_lu/article/details/43854 ...
- 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是一个用于网络搜索 ...
- 【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 ...
- 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 ...
- 树莓派入手(烧写系统,调整分区,配置Java环境,串口GPS配置) 分类: Raspberry Pi 2015-04-09 21:13 145人阅读 评论(0) 收藏
原来的tf卡无故启动不起来,检查发现其文件系统分区使用率为0%. 数据全部丢失!!!!! 血的教训告诉我们备份文件系统的重要性,一切需要重头来.... 烧录系统 安装系统有两种方式, NOOBS工具安 ...
- iOS中UITextField 使用全面解析 分类: ios技术 2015-04-10 14:37 153人阅读 评论(0) 收藏
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 13 ...
随机推荐
- Spring Cloud学习笔记【三】服务消费者Feign
Feign 是一个声明式的 Web Service 客户端,它的目的就是让 Web Service 调用更加简单.它整合了 Ribbon 和 Hystrix,从而让我们不再需要显式地使用这两个组件.F ...
- Nginx+tomcat+ssl免费证书配置
0.说明 本文说描写叙述的方式是用nginx的443重定向到tomcat的8443,nginx的80port重定到tomcat的8080: 乱入:个人标记:caicongyang 1.nginx安装 ...
- js中由undefined说起
typeof()函数 返回的是字符串.有六种可能:"number"."string"."boolean"."object" ...
- elasticsearch index之Translog
跟大多数分布式系统一样,es也通过临时写入写操作来保证数据安全.因为lucene索引过程中,数据会首先据缓存在内存中直到达到一个量(文档数或是占用空间大小)才会写入到磁盘.这就会带来一个风险,如果在写 ...
- 具有可视化的功能的一款开源软件Gource
今天为大家介绍一个非常有趣儿的开源软件,Gource可以将代码版本控制系统里面的日志全部可视化,也就是说可以看见每个成员在系统里面提交代码的行为,Gource目前支持git,hg,svn. 650) ...
- HDU 4731 Minimum palindrome 打表找规律
http://acm.hdu.edu.cn/showproblem.php?pid=4731 就做了两道...也就这题还能发博客了...虽然也是水题 先暴力DFS打表找规律...发现4个一组循环节.. ...
- Nginx系列(一)--nginx是什么?
一.介绍 Nginx是一个高性能的HTTP和反向代理server,也是一个IMAP/POP3/SMTP代理server. Nginx是一款轻量级的Webserver/反向代理server以及电子邮件代 ...
- 有关cascade的结构体
/* internal cascade classifier */ typedef struct CvCascadeHaarClassifier { CV_INT_HAAR_CLASSIFIER_FI ...
- softInputMode- 软件盘的设置
今天遇到一个问题,就是软件盘弹出来以后,会把之前的布局界面整个的挤到屏幕的外面,而且按下返回建以后,这个软件盘占据的空间会留下一个黑色的背景.在网上查找了很多的方法,刚开始都是说,如下方法 <a ...
- linux设置tab键的宽度为4
先cd 到~目录 ~$ cd ~$ vi .vimrc set nu