log4j rollingfileappender不向文件添加Map器和缩减器日志

ldioqlga  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(391)

我们希望我们的应用程序日志打印到本地节点上的文件。我们正在使用log4j的rollingfileappender。
我们的 log4j.properties 文件如下:

ODS.LOG.DIR=/var/log/appLogs
ODS.LOG.INFO.FILE=application.log
ODS.LOG.ERROR.FILE=application_error.log

# Root logger option

log4j.rootLogger=ERROR, console
log4j.logger.com.ournamespace=ERROR, APP_APPENDER, ERROR_APPENDER

# 

# console

# Add "console" to rootlogger above if you want to use this

# 

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}-%r %p %c{5}: %m%n

# Direct log messages to a log file

log4j.appender.APP_APPENDER=org.apache.log4j.RollingFileAppender
log4j.appender.APP_APPENDER.File=${ODS.LOG.DIR}/${ODS.LOG.INFO.FILE}
log4j.appender.APP_APPENDER.MaxFileSize=200MB
log4j.appender.APP_APPENDER.MaxBackupIndex=30
log4j.appender.APP_APPENDER.layout=org.apache.log4j.PatternLayout
log4j.appender.APP_APPENDER.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}-%r %p %c{10}: %m%n

log4j.appender.ERROR_APPENDER=org.apache.log4j.RollingFileAppender
log4j.appender.ERROR_APPENDER.Threshold=ERROR
log4j.appender.ERROR_APPENDER.File=${ODS.LOG.DIR}/${ODS.LOG.ERROR.FILE}
log4j.appender.ERROR_APPENDER.MaxFileSize=200MB
log4j.appender.ERROR_APPENDER.MaxBackupIndex=90
log4j.appender.ERROR_APPENDER.layout=org.apache.log4j.PatternLayout
log4j.appender.ERROR_APPENDER.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}-%r %p %c{10}: %m%n

我们的mr驱动程序日志出现在 /var/log/appLogs 目录,但我们的Map程序和还原程序日志不会显示在此目录中。
我们已经使用ambari(hortonworks数据平台)将log4j.properties片段复制到hdfs-log4j、yarn-log4j、hbase-log4j和zookeeper-log4j。我们的mr作业通常使用hbase输入和输出格式类。
为了让mapper和reducer日志也显示在/var/log/applogs目录中,我们需要做哪些更改?
编辑:日志将出现在jobhistory ui中 syslog 但是它们没有被添加到日志文件中。我们错过了什么?

j2cgzkjk

j2cgzkjk1#

例如,要配置log4j,可以调用 PropertyConfigurator.configure(properties); 从您的代码中,例如在mapper/reducer设置方法中。
这是存储在hdfs上的属性的示例:

InputStream is = fs.open(log4jPropertiesPath);
        Properties properties = new Properties();
        properties.load(is);
        PropertyConfigurator.configure(properties);

其中fs是文件系统对象,log4jpropertiespath是hdfs上的路径。

相关问题