hadoop : log4j.properties 系统日志文件、namenode审计日志、tasktracker子进程的任务日志的属性
Log4j 配置
Hadoop的日志消息使用的是Log4j,这通过类路径下的log4j.properties配置的。这个文件定义了 记录什么和记录位置。对于应用程序来说,默认的根logger是"INFO,console",它记录了所有的在INFO水平以及之上的控制台的标准错误 流。服务器记录"INFO,console",,它每天都在一个文件上记录当天的日志。日志文件的命名 是$HADOOP_LOG_DIR/hadoop-$HADOOP_IDENT_STRING-<server>.log。
对于Hadoop的开发者来说,它通常和便利的从特殊的类得到附加的日志。如果你工作在TaskTracker模 式,例如,你可能需要配置
* log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
在你的log4j.properties文件里。
检查日志
在0.18和以后的版本中, 你可以从Namenode中检查日志。默认情况下,记录到appender的事件将在Namenode.log下面排列,它将从接口(见例子)增加的事件 发生的数量。
事件将以key=value对的集合的形式呈现:
格式
键 值
ugi <user>,<group>[,<group>]*
ip <client ip address>
cmd (open|create|delete|rename|mkdirs|listStatus|setReplication|setOwner|setPermission)
src <path>
dst (<path>|"null")
perm (<user>:<group>:<perm mask>|"null")
输出行的例子:
<log4j header> ugi=wsmith,users,staff ip=/192.168.0.10 cmd=mkdirs src=/foo/bar dst=null perm=wsmith:staff:rwxr-xr-x
记录检查事件到回滚日志、系统日志的例子:
# Log at INFO level to DRFAAUDIT, SYSLOG appenders
log4j.logger.org.apache.hadoop.fs.FSNamesystem.audit=INFO,DRFAAUDIT,SYSLOG
# Do not forward audit events to parent appenders (i.e. namenode)
log4j.additivity.org.apache.hadoop.fs.FSNamesystem.audit=false
# Configure local appender
log4j.appender.DRFAAUDIT=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFAAUDIT.File=/var/log/audit.log
log4j.appender.DRFAAUDIT.DatePattern=.yyyy-MM-dd
log4j.appender.DRFAAUDIT.layout=org.apache.log4j.PatternLayout
log4j.appender.DRFAAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
# Configure syslog appender
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost=loghost
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
log4j.appender.SYSLOG.Facility=LOCAL1
last edited 2008-08-14 00:41:21 by ChrisDouglas