进入CM界面HDFS组件–>配置–>搜索DataNode log
进入CM界面HDFS组件–>配置–>搜索NameNode log
找到”DataNode 日志记录高级配置代码段(安全阀)”如果英文版则是”DataNode Logging Advanced Configuration Snippet (Safety Valve)”,同理找到NameNode的位置,依次改成
log4j.appender.RFA.layout.ConversionPattern = {"time":"%d{yyyy-MM-dd HH:mm:ss,SSS}","logtype":"%p","loginfo":"%c:%m"}%n
然后保存重启。
Apache 版
不是使用的CDH可以修改Hadoop的log4j的配置文件log4j.properties
,把log4j.appender.RFA.layout.ConversionPattern
对应的改成{"time":"%d{yyyy-MM-dd HH:mm:ss,SSS}","logtype":"%p","loginfo":"%c:%m"}%n
注意
我当初修改的时候,看到log4j.properties配置的是console
,就把log4j.appender.console.layout.ConversionPattern
给修改了。
# Define some default values that can be overridden by system properties
hadoop.root.logger=INFO,console
hadoop.log.dir=.
hadoop.log.file=hadoop.log
结果并不生效,后来发现了注释的话:Define some default values that can be overridden by system properties
,也就是说这些属性可以被系统设置覆盖,而所谓的系统属性其实是hadoop-env.sh
和hadoop-daemon.sh
(一个在${HADOOP_HOME}/etc/hadoop
,一个在${HADOOP_HOME}/sbin
)。
查看hadoop-daemon.sh可以看到:
export HADOOP_ROOT_LOGGER=${HADOOP_ROOT_LOGGER:-"INFO,RFA"}
系统属性是RFA而不是console。所以应该修改log4j.appender.RFA.layout.ConversionPattern
这个。