我们希望我们的应用程序日志打印到本地节点上的文件。我们正在使用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
但是它们没有被添加到日志文件中。我们错过了什么?
1条答案
按热度按时间j2cgzkjk1#
例如,要配置log4j,可以调用
PropertyConfigurator.configure(properties);
从您的代码中,例如在mapper/reducer设置方法中。这是存储在hdfs上的属性的示例:
其中fs是文件系统对象,log4jpropertiespath是hdfs上的路径。