我们希望将应用程序日志打印到本地节点上的文件中。我们使用 Log4j 的 RollingFileAppender。
Our 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
目录,但我们的映射器和减速器日志不会显示在该目录中。
我们已使用 Ambari(Hortonworks 数据平台)将 log4j.properties 片段复制到 hdfs-log4j、yarn-log4j、hbase-log4j 和 Zookeeper-log4j。我们的 MR 作业通常使用 HBase 输入和输出格式类。
我们需要进行哪些更改才能使映射器和减速器日志也出现在 /var/log/appLogs 目录中?
编辑:日志出现在 JobHistory UI 中syslog
但它们没有被添加到日志文件中。我们缺少什么?
例如,要配置 log4j,您可以调用PropertyConfigurator.configure(properties);
从你的代码例如在映射器/减速器设置方法中。
这是存储在 hdfs 上的属性的示例:
InputStream is = fs.open(log4jPropertiesPath);
Properties properties = new Properties();
properties.load(is);
PropertyConfigurator.configure(properties);
其中 fs 是 FileSystem 对象,log4jPropertiesPath 是 hdfs 上的路径。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)