首页 > 代码库 > hadoop日志输出

hadoop日志输出

hadoop有自己记录日志的路径和配置方法。
 打印日志方法:log4j,slf4j等记录日志方法,系统日志等。
 日志记录的路径和文件名的定义:mapred-site.xml中有相关的设置。
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <!-- Put site-specific property overrides in this file. -->  
  5.   
  6. <configuration>  
  7. <!-- jobtracker的master地址-->  
  8. <property>   
  9. <name>mapred.job.tracker</name>   
  10. <value>192.168.75.130:9001</value>   
  11. </property>  
  12. <property>  
  13. <!-- hadoop的日志输出指定目录-->  
  14. <name>mapred.local.dir</name>  
  15. <value>/root/hadoop1.2/mylogs</value>  
  16. </property>  
  17. </configuration>
 日志内容的配置
修改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
日志输出
修改DFSClient类
这里只是简单的为了验证这个过程的正确性,以后还回加入更有意义的日志内容。
首先在DFSClient类中声明一个LOG实例:
public static final Logger mylog = Logger.getLogger(EnStSas.class);
在read(byte buf[], int off, int len)函数中,添加如下代码:
myLOG.info("Read Block!!!!");
if(currentBlock!=null)
   myLOG.info("Read block: "+currentBlock.getBlockId());

hadoop日志输出