[HADOOP] hadoop에서 log4j.properties 무시
HADOOPhadoop에서 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.기본 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.log4j가 구성을 찾는 방법을 배우려면 설명서를 참조하십시오.
log4j가 구성을 찾는 방법을 배우려면 설명서를 참조하십시오.
-
==============================
3.HADOOP_CONF_DIR에서 log4j 파일을 수정하십시오. hadoop 작업은 응용 프로그램의 log4j 파일을 고려하지 않습니다. 하나는 HADOOP_CONF_DIR 내부의 것으로 간주됩니다.
HADOOP_CONF_DIR에서 log4j 파일을 수정하십시오. hadoop 작업은 응용 프로그램의 log4j 파일을 고려하지 않습니다. 하나는 HADOOP_CONF_DIR 내부의 것으로 간주됩니다.
hadoop이 다른 log4j 파일을 사용하게하려면 다음 중 하나를 시도하십시오 :
-
==============================
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} java-opts>를 사용하고 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.나는 같은 문제 (CDH3U3, 하둡 0.20.2)에 직면했다. 마침내 해결 방법을 찾았습니다 (경로에 접미사 파일 : 접두어).
나는 같은 문제 (CDH3U3, 하둡 0.20.2)에 직면했다. 마침내 해결 방법을 찾았습니다 (경로에 접미사 파일 : 접두어).
-Dlog4j.configuration=file:/path/to/user_specific/log4j.xml
-
==============================
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.jar 파일 내에 log4j 등록 정보 파일이 이미 구성되어있는 경우 -classpath 앞에 -Dlog4j.configuration =을두면 간단히 겹쳐 쓸 수 있습니다.
jar 파일 내에 log4j 등록 정보 파일이 이미 구성되어있는 경우 -classpath 앞에 -Dlog4j.configuration =을두면 간단히 겹쳐 쓸 수 있습니다.
다음은 샘플입니다.
java -Dlog4j.configuration = .. \ conf \ log4j.properties -classpath % CLASSPATH %
-
==============================
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.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 = 경고
from https://stackoverflow.com/questions/9081625/override-log4j-properties-in-hadoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hadoop 의존성없이 아파치 마호트를 사용할 수 있습니까? (0) | 2019.07.15 |
---|---|
[HADOOP] Hbase 스키마 중첩 엔티티 (0) | 2019.07.15 |
[HADOOP] Hadoop 암호가없는 ssh가 필요한 이유는 무엇입니까? (0) | 2019.07.15 |
[HADOOP] Mapreduce shuffle 단계의 메모리 부족 오류 (0) | 2019.07.15 |
[HADOOP] Hadoop 파일 시스템의 여러 파일에 걸친 Grep (0) | 2019.07.15 |