分享

Hadoop log4j日志配置介绍

desehawk 2015-1-29 18:01:13 发表于 常识型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 8 88483

问题导读


1.自定义修改hadoop/conf/log4j.properties,需要添加哪些内容?
2.需要修改那个类?
3.修改后,如何生效?






log4j.propertites
  1. # Define some default values that can be overridden by system properties
  2. hadoop.root.logger=INFO,console
  3. hadoop.log.dir=.
  4. hadoop.log.file=hadoop.log
  5.    
  6. #
  7. # Job Summary Appender  
  8. #
  9. # Use following logger to send summary to separate file defined by  
  10. # hadoop.mapreduce.jobsummary.log.file rolled daily:
  11. # hadoop.mapreduce.jobsummary.logger=INFO,JSA
  12. #  
  13. hadoop.mapreduce.jobsummary.logger=${hadoop.root.logger}
  14. hadoop.mapreduce.jobsummary.log.file=hadoop-mapreduce.jobsummary.log
  15.    
  16. # Define the root logger to the system property "hadoop.root.logger".
  17. log4j.rootLogger=${hadoop.root.logger}, EventCounter
  18.    
  19. # Logging Threshold
  20. log4j.threshhold=ALL
  21.    
  22. #
  23. # Daily Rolling File Appender
  24. #
  25.    
  26. log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
  27. log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
  28.    
  29. # Rollver at midnight
  30. log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
  31.    
  32. # 30-day backup
  33. #log4j.appender.DRFA.MaxBackupIndex=30
  34. log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
  35.    
  36. # Pattern format: Date LogLevel LoggerName LogMessage
  37. #log4j.appender.DRFA.layout.ConversionPattern=%l %m%n
  38. # Debugging Pattern format 日志文件格式
  39. log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
  40.    
  41.    
  42. #
  43. # console
  44. # Add "console" to rootlogger above if you want to use this  
  45. #
  46.    
  47. log4j.appender.console=org.apache.log4j.ConsoleAppender
  48. log4j.appender.console.target=System.err
  49. log4j.appender.console.layout=org.apache.log4j.PatternLayout
  50. log4j.appender.console.layout.ConversionPattern=%l: %m%n
  51.    
  52. #
  53. # TaskLog Appender
  54. #
  55.    
  56. #Default values
  57. hadoop.tasklog.taskid=null
  58. hadoop.tasklog.iscleanup=false
  59. hadoop.tasklog.noKeepSplits=4
  60. hadoop.tasklog.totalLogFileSize=100
  61. hadoop.tasklog.purgeLogSplits=true
  62. hadoop.tasklog.logsRetainHours=12
  63.    
  64. log4j.appender.TLA=org.apache.hadoop.mapred.TaskLogAppender
  65. log4j.appender.TLA.taskId=${hadoop.tasklog.taskid}
  66. log4j.appender.TLA.isCleanup=${hadoop.tasklog.iscleanup}
  67. log4j.appender.TLA.totalLogFileSize=${hadoop.tasklog.totalLogFileSize}
  68.    
  69. log4j.appender.TLA.layout=org.apache.log4j.PatternLayout
  70. log4j.appender.TLA.layout.ConversionPattern=%l  %p %c: %m%n
  71.    
  72. #
  73. #Security audit appender
  74. #
  75. hadoop.security.log.file=SecurityAuth.audit
  76. log4j.appender.DRFAS=org.apache.log4j.DailyRollingFileAppender  
  77. log4j.appender.DRFAS.File=${hadoop.log.dir}/${hadoop.security.log.file}
  78.    
  79. log4j.appender.DRFAS.layout=org.apache.log4j.PatternLayout
  80. log4j.appender.DRFAS.layout.ConversionPattern=%l %p %c: %m%n
  81. #new logger
  82. log4j.logger.SecurityLogger=OFF,console
  83. log4j.logger.SecurityLogger.additivity=false
  84.    
  85. #
  86. # Rolling File Appender
  87. #
  88.    
  89. #log4j.appender.RFA=org.apache.log4j.RollingFileAppender
  90. #log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}
  91.    
  92. # Logfile size and and 30-day backups
  93. #log4j.appender.RFA.MaxFileSize=1MB
  94. #log4j.appender.RFA.MaxBackupIndex=30
  95.    
  96. #log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
  97. #log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
  98. #log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
  99.    
  100. #
  101. # FSNamesystem Audit logging
  102. # All audit events are logged at INFO level
  103. #
  104. log4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=DEBUG
  105.    
  106. # Custom Logging levels
  107.    
  108. hadoop.metrics.log.level=DEBUG
  109. #log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG
  110. #log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
  111. #log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
  112. #应该是设置包下类的日志级别
  113. log4j.logger.org.apache.hadoop.metrics2=${hadoop.metrics.log.level}
  114.    
  115. # Jets3t library
  116. log4j.logger.org.jets3t.service.impl.rest.httpclient.RestS3Service=ERROR
  117.    
  118. #
  119. # Null Appender
  120. # Trap security logger on the hadoop client side
  121. #
  122. log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender
  123.    
  124. #
  125. # Event Counter Appender
  126. # Sends counts of logging messages at different severity levels to Hadoop Metrics.
  127. #
  128. log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
  129.    
  130. #
  131. # Job Summary Appender
  132. #
  133. log4j.appender.JSA=org.apache.log4j.DailyRollingFileAppender
  134. log4j.appender.JSA.File=${hadoop.log.dir}/${hadoop.mapreduce.jobsummary.log.file}
  135. log4j.appender.JSA.layout=org.apache.log4j.PatternLayout
  136. log4j.appender.JSA.layout.ConversionPattern=%l %p %c{2}: %m%n
  137. log4j.appender.JSA.DatePattern=.yyyy-MM-dd
  138. log4j.logger.org.apache.hadoop.mapred.JobInProgress$JobSummary=${hadoop.mapreduce.jobsummary.logger}
  139. log4j.additivity.org.apache.hadoop.mapred.JobInProgress$JobSummary=false
复制代码


hadoop日志级别设置
在hadoop/bin/ hadoop-daemon.sh文件下
export HADOOP_ROOT_LOGGER="DEBUG,DRFA"

自定义日志
目标:将需要的信息写入自己指定的独立的日志中。
需求:这次只是一个尝试,在DFSClient中,将部分内容写入指定的日志文件中。在客户端读取HDFS数据时,将读的blockID写入文件。
步骤:
1、修改hadoop/conf/log4j.properties文件。在文件末尾添加如下内容:
#为写日志的操作取个名字,MyDFSClient。用来在DFSClient中获取该日志的实例。并指定输出方式为自定义的OUT
log4j.logger.MyDFSClient=DEBUG,OUT
#设置OUT的输出方式为输出到文件
log4j.appender.OUT=org.apache.log4j.FileAppender
#设置文件路径
log4j.appender.OUT.File=${hadoop.log.dir}/DFSClient.log
#设置文件的布局
log4j.appender.OUT.layout=org.apache.log4j.PatternLayout
#设置文件的格式
log4j.appender.OUT.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
#设置该日志操作不与父类日志操作重叠
log4j.additivity.MyDFSClient=false

2、保存该文件,复制到集群各个节点的hadoop/conf目录下,替换原有的文件。

3、修改DFSClient类
这里只是简单的为了验证这个过程的正确性,以后还回加入更有意义的日志内容。
首先在DFSClient类中声明一个LOG实例:
public static final Log myLOG = LogFactory.getLog("MyDFSClient");
在read(byte buf[], int off, int len)函数中,添加如下代码:
myLOG.info("Read Block!!!!");
if(currentBlock!=null)
   myLOG.info("Read block: "+currentBlock.getBlockId());

4、重新启动hadoop。

5、这里使用dfs命令进行测试。
$bin/hadoop dfs -cat /user/XXX/out/part-r-00000
可以看到文件part-r-00000的内容输出到屏幕。这时在/hadoop/logs/DFSClient.log文件中,可以看到刚才在类中记录的日志。验证成功。


















已有(8)人评论

跳转到指定楼层
cochou 发表于 2015-1-30 08:50:54
回复

使用道具 举报

cochou 发表于 2015-1-30 08:51:25
回复

使用道具 举报

cochou 发表于 2015-1-30 08:51:56
回复

使用道具 举报

cochou 发表于 2015-1-30 08:52:28
回复

使用道具 举报

cochou 发表于 2015-1-30 08:53:39
回复

使用道具 举报

韩克拉玛寒 发表于 2015-1-30 09:04:50
回复

使用道具 举报

hua0704 发表于 2015-1-30 14:59:09
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条