복붙노트

[HADOOP] Map4 및 Reducer 로그를 파일에 추가하지 않는 Log4j RollingFileAppender

HADOOP

Map4 및 Reducer 로그를 파일에 추가하지 않는 Log4j RollingFileAppender

응용 프로그램 로그를 로컬 노드의 파일로 인쇄하려고합니다. 우리는 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 디렉토리에 나타나지만 매퍼 및 리듀서 로그는이 디렉토리에 표시되지 않습니다.

Ambari (Hortonworks Data Platform)를 사용하여 log4j.properties 스 니펫을 hdfs-log4j, yarn-log4j, hbase-log4j 및 zookeeper-log4j에 복사했습니다. MR 작업은 일반적으로 HBase 입력 및 출력 형식 클래스를 사용합니다.

매퍼 및 리듀서 로그를 / var / log / appLogs 디렉토리에도 표시하려면 어떤 변경이 필요합니까?

편집 : JobHistory UI syslog에 로그가 표시되지만 로그 파일에 추가되지 않습니다. 우리는 무엇을 놓치고 있습니까?

해결법

  1. ==============================

    1.예를 들어 log4j를 구성하기 위해 PropertyConfigurator.configure (properties)를 호출 할 수 있습니다. 예를 들어 코드에서 매퍼 / 감속기 설정 방법.

    예를 들어 log4j를 구성하기 위해 PropertyConfigurator.configure (properties)를 호출 할 수 있습니다. 예를 들어 코드에서 매퍼 / 감속기 설정 방법.

    다음은 hdfs에 저장된 속성이있는 예입니다.

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

    여기서 fs는 FileSystem 객체이고 log4jPropertiesPath는 hdfs의 경로입니다.

  2. from https://stackoverflow.com/questions/49797255/log4j-rollingfileappender-not-adding-mapper-and-reducer-logs-to-file by cc-by-sa and MIT license