복붙노트

[HADOOP] hadoop에서 log4j.properties 무시

HADOOP

hadoop에서 log4j.properties 무시

hadoop의 기본 log4j.properties를 어떻게 대체합니까? hadoop.root.logger = WARN, 콘솔을 설정하면 콘솔에 로그를 인쇄하지 않지만 원하는 것은 로그 파일에 INFO를 출력하지 않아야한다는 것입니다. 내 jar 파일에 log4j.properties 파일을 추가했지만 기본 파일을 덮어 쓸 수 없습니다. 요컨대, 로그 파일에 오류 및 경고 만 인쇄하려고합니다.

# Define some default values that can be overridden by system properties
hadoop.root.logger=INFO,console
hadoop.log.dir=.
hadoop.log.file=hadoop.log

#
# Job Summary Appender 
#
# Use following logger to send summary to separate file defined by 
# hadoop.mapreduce.jobsummary.log.file rolled daily:
# hadoop.mapreduce.jobsummary.logger=INFO,JSA
# 
hadoop.mapreduce.jobsummary.logger=${hadoop.root.logger}
hadoop.mapreduce.jobsummary.log.file=hadoop-mapreduce.jobsummary.log

# Define the root logger to the system property "hadoop.root.logger".
log4j.rootLogger=${hadoop.root.logger}, EventCounter

# Logging Threshold
log4j.threshold=ALL

#
# Daily Rolling File Appender
#

log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}

# Rollver at midnight
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd

# 30-day backup
#log4j.appender.DRFA.MaxBackupIndex=30
log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout

# Pattern format: Date LogLevel LoggerName LogMessage
log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
# Debugging Pattern format
#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n


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

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n

#
# TaskLog Appender
#

#Default values
hadoop.tasklog.taskid=null
hadoop.tasklog.iscleanup=false
hadoop.tasklog.noKeepSplits=4
hadoop.tasklog.totalLogFileSize=100
hadoop.tasklog.purgeLogSplits=true
hadoop.tasklog.logsRetainHours=12

log4j.appender.TLA=org.apache.hadoop.mapred.TaskLogAppender
log4j.appender.TLA.taskId=${hadoop.tasklog.taskid}
log4j.appender.TLA.isCleanup=${hadoop.tasklog.iscleanup}
log4j.appender.TLA.totalLogFileSize=${hadoop.tasklog.totalLogFileSize}

log4j.appender.TLA.layout=org.apache.log4j.PatternLayout
log4j.appender.TLA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n

#
#Security appender
#
hadoop.security.log.file=SecurityAuth.audit
log4j.appender.DRFAS=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.DRFAS.File=${hadoop.log.dir}/${hadoop.security.log.file}

log4j.appender.DRFAS.layout=org.apache.log4j.PatternLayout
log4j.appender.DRFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
#new logger
# Define some default values that can be overridden by system properties
hadoop.security.logger=INFO,console
log4j.category.SecurityLogger=${hadoop.security.logger}

#
# Rolling File Appender
#

#log4j.appender.RFA=org.apache.log4j.RollingFileAppender
#log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}

# Logfile size and and 30-day backups
#log4j.appender.RFA.MaxFileSize=1MB
#log4j.appender.RFA.MaxBackupIndex=30

#log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n

#
# FSNamesystem Audit logging
# All audit events are logged at INFO level
#
log4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=WARN

# Custom Logging levels

#log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG
#log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
#log4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=DEBUG

# Jets3t library
log4j.logger.org.jets3t.service.impl.rest.httpclient.RestS3Service=ERROR

#
# Event Counter Appender
# Sends counts of logging messages at different severity levels to Hadoop Metrics.
#
log4j.appender.EventCounter=org.apache.hadoop.metrics.jvm.EventCounter

#
# Job Summary Appender
#
log4j.appender.JSA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.JSA.File=${hadoop.log.dir}/${hadoop.mapreduce.jobsummary.log.file}
log4j.appender.JSA.layout=org.apache.log4j.PatternLayout
log4j.appender.JSA.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
log4j.appender.JSA.DatePattern=.yyyy-MM-dd
log4j.logger.org.apache.hadoop.mapred.JobInProgress$JobSummary=${hadoop.mapreduce.jobsummary.logger}
log4j.additivity.org.apache.hadoop.mapred.JobInProgress$JobSummary=false

#
# MapReduce Audit Log Appender
#

# Set the MapReduce audit log filename
#hadoop.mapreduce.audit.log.file=hadoop-mapreduce.audit.log

# Appender for AuditLogger.
# Requires the following system properties to be set
#    - hadoop.log.dir (Hadoop Log directory)
#    - hadoop.mapreduce.audit.log.file (MapReduce audit log filename)

#log4j.logger.org.apache.hadoop.mapred.AuditLogger=INFO,MRAUDIT
#log4j.additivity.org.apache.hadoop.mapred.AuditLogger=false
#log4j.appender.MRAUDIT=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.MRAUDIT.File=${hadoop.log.dir}/${hadoop.mapreduce.audit.log.file}
#log4j.appender.MRAUDIT.DatePattern=.yyyy-MM-dd
#log4j.appender.MRAUDIT.layout=org.apache.log4j.PatternLayout
#log4j.appender.MRAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n

해결법

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

    1.기본 Log4j.properties 파일을 사용하는 경우 로깅 설정은 시작 스크립트의 환경 변수에 의해 무시됩니다. 기본 log4j를 사용하고 로깅 수준을 변경하려면 $ HADOOP_CONF_DIR / hadoop-env.sh를 사용하십시오.

    기본 Log4j.properties 파일을 사용하는 경우 로깅 설정은 시작 스크립트의 환경 변수에 의해 무시됩니다. 기본 log4j를 사용하고 로깅 수준을 변경하려면 $ HADOOP_CONF_DIR / hadoop-env.sh를 사용하십시오.

    예를 들어, 로거를 디버그 로그 수준 및 DRFA 로거로 변경하려면 다음을 사용하십시오.

    export HADOOP_ROOT_LOGGER="DEBUG,DRFA"
    
  2. ==============================

    2.log4j가 구성을 찾는 방법을 배우려면 설명서를 참조하십시오.

    log4j가 구성을 찾는 방법을 배우려면 설명서를 참조하십시오.

  3. ==============================

    3.HADOOP_CONF_DIR에서 log4j 파일을 수정하십시오. hadoop 작업은 응용 프로그램의 log4j 파일을 고려하지 않습니다. 하나는 HADOOP_CONF_DIR 내부의 것으로 간주됩니다.

    HADOOP_CONF_DIR에서 log4j 파일을 수정하십시오. hadoop 작업은 응용 프로그램의 log4j 파일을 고려하지 않습니다. 하나는 HADOOP_CONF_DIR 내부의 것으로 간주됩니다.

    hadoop이 다른 log4j 파일을 사용하게하려면 다음 중 하나를 시도하십시오 :

  4. ==============================

    4.Maven 포장 :

    Maven 포장 :

    커스텀 debug-log.properties 파일을 src / main / java / resources에 추가 할 필요가 있음을 알았다면 Maven은이를 application.jar 루트 디렉토리에 추가했다. 그런 다음 -Dlog4j를 참조하는 것과 상관 없다. .configuration = debug-log.properties를 명령 행에서 찾으십시오.

    Oozie 액션 :

    Oozie와 관련하여 workflow.xml 작업에서 -Dlog4j.configuration = $ {log4jConfig} 를 사용하고 job.properties 파일에서 다음을 정의하십시오.

    #one of the following log4j.config parameters must be defined 
    #log4jConfig=log4j.properties
    log4jConfig=debug-log.properties
    

    Oozie 작업 :

     <property>
          <name>mapred.child.java.opts</name>
          <value>-Dlog4j.configuration=${log4jConfig}</value>
     </property> 
    
  5. ==============================

    5.나는 같은 문제 (CDH3U3, 하둡 0.20.2)에 직면했다. 마침내 해결 방법을 찾았습니다 (경로에 접미사 파일 : 접두어).

    나는 같은 문제 (CDH3U3, 하둡 0.20.2)에 직면했다. 마침내 해결 방법을 찾았습니다 (경로에 접미사 파일 : 접두어).

    -Dlog4j.configuration=file:/path/to/user_specific/log4j.xml
    
  6. ==============================

    6.설파 (Sulpha) hadoop 1.2.1의 경우 hadoop-core.jar에있는 task-log4j.properties를 무시하는 것이 중요합니다

    설파 (Sulpha) hadoop 1.2.1의 경우 hadoop-core.jar에있는 task-log4j.properties를 무시하는 것이 중요합니다

    내 의사 분배 모드의 경우,

    내 돼지 UDF의 디버그 메시지를 출력 할 수 없었고 hadoop-core.jar에서 task-log4j.properties를 삭제하고 $ HADOOP_INSTALL / conf / log4j.properties 사본으로 대체해야했습니다.

    사용 된

    zip -d hadoop-core-1.2.1.jar task-log4j.properties #to delete
    

    zip -g hadoop-core-1.2.1.jar task-log4j.properties #to add back 
    
  7. ==============================

    7.jar 파일 내에 log4j 등록 정보 파일이 이미 구성되어있는 경우 -classpath 앞에 -Dlog4j.configuration =을두면 간단히 겹쳐 쓸 수 있습니다.

    jar 파일 내에 log4j 등록 정보 파일이 이미 구성되어있는 경우 -classpath 앞에 -Dlog4j.configuration =을두면 간단히 겹쳐 쓸 수 있습니다.

    다음은 샘플입니다.

    java -Dlog4j.configuration = .. \ conf \ log4j.properties -classpath % CLASSPATH %

  8. ==============================

    8.하위 java 옵션에 log4j.configuration 옵션을 넣으십시오.

    하위 java 옵션에 log4j.configuration 옵션을 넣으십시오.

    나.

    hadoop jar ... -Dmapred.child.java.opts=-Dlog4j.configuration=file:/...../log4j_debug.properties
    

    /home/yourname/log4j_debug.properties 또는 /tmp/log4j_debug.properties와 같은 디렉토리 경로에있는 모든 슬레이브 서버에 log4j_debug.properties 파일을 넣어야합니다.

    이 설정은 mapred.child.java.opts 설정을 덮어 씁니다. 32MB 힙 크기를 의미하는 -Xmx32m과 같은 다른 옵션과 함께 사용하려면 다음과 같이하십시오.

    hadoop jar ... -Dmapred.child.java.opts='-Xmx32m -Dlog4j.configuration=file:/...../log4j_debug.properties'
    
  9. ==============================

    9.Hadoop 1.2.1에는 log4j.properties와 task-log4j.properties라는 두 개의 설정 파일이 있습니다. 위의 예제를 만들기 위해 log4j.properties가 아닌 task-log4j.properties에서 변경 작업을 수행해야합니다.

    Hadoop 1.2.1에는 log4j.properties와 task-log4j.properties라는 두 개의 설정 파일이 있습니다. 위의 예제를 만들기 위해 log4j.properties가 아닌 task-log4j.properties에서 변경 작업을 수행해야합니다.

    task-log4j.properties에 다음 행을 추가 할 수 있습니다. log4j.logger.org.xxx = 경고

  10. from https://stackoverflow.com/questions/9081625/override-log4j-properties-in-hadoop by cc-by-sa and MIT license