Remplacer log4j.properties dans hadoop
Comment puis-je remplacer la valeur par défaut de log4j.propriétés dans hadoop? Si je l'ai mis à hadoop.de la racine.logger=WARN,console, elle n'est pas l'impression que les journaux sur la console, alors que ce que je veux, c'est qu'il ne devrait pas imprimer les INFOS dans les journaux de fichier. J'ai ajouté un log4j.les propriétés de fichier dans mon bocal, mais je suis incapable de remplacer la valeur par défaut. En bref, je veux que le fichier journal pour imprimer uniquement les erreurs et les avertissements.
# 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
source d'informationauteur RFT
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez la valeur par défaut de Log4j.fichier de propriétés, les paramètres d'enregistrement d'obtenir remplacées par des variables d'environnement à partir du script de démarrage. Si vous souhaitez utiliser la valeur par défaut log4j et tout simplement envie de changer le niveau d'enregistrement, utilisez
$HADOOP_CONF_DIR/hadoop-env.sh
Par exemple, pour modifier votre enregistreur de journal de DÉBOGAGE de niveau et DRFA enregistreur, utilisez
log4j.properties
de votrehadoop jar
jar
/log4j.properties
est d'abord dans le classpath (log4j prend le premierlog4j.properties
depuis le classpath qu'il trouve)-Dlog4j.configuration=PATH_TO_FILE
Voir le la documentation pour savoir comment log4j trouve la configuration.
Modifier le
log4j
fichier à l'intérieur deHADOOP_CONF_DIR
. Notez que hadoop travail coutume de considérer la log4j fichier de votre application. Il examinera l'un à l'intérieur deHADOOP_CONF_DIR
.Si vous voulez forcer hadoop à utiliser certains autres
log4j
fichier, essayez l'une de ces:Vous pouvez essayer ce que @Patrice a dit. c'est à dire.
-Dlog4j.configuration=file:/path/to/user_specific/log4j.xml
Personnaliser HADOOP_CONF_DIR/log4j.xml et réglez l'enregistreur de niveau pour "votre" classes selon votre souhait. D'autres utilisateur(s) ne sera pas affectée à cause de cela, sauf si les deux sont d'avoir des classes avec la même structure de paquet. Cela ne marchera pas pour la base d'hadoop classes que tous les utilisateurs pourront obtenir afftected.
Créer vos propres fichier log4j. Répliquer l'annuaire HADOOP_CONF_DIR et de mettre votre fichier log4j à l'intérieur. l'exportation HADOOP_CONF_DIR à votre répertoire conf. Les autres utilisateurs point de celui par défaut.
Maven Emballage:
Une fois que j'ai réalisé que je devais ajouter à mon habitude
debug-log.properties
fichier src/main/java/ressources, Maven de l'ajouter à la application.jar répertoire racine, et puis c'était juste une question de s'y référant ou non à-Dlog4j.configuration=debug-log.properties
à partir de la ligne de commande.Oozie
<java>
Action:En ce qui concerne Oozie, utilisez
<java-opts>-Dlog4j.configuration=${log4jConfig}</java-opts>
dans le workflow.xml les actions et définir les éléments suivants dans un emploi.fichier de propriétés.Oozie
<map-reduce>
Action:J'ai été confrontée au même problème (CDH3U3, Hadoop 0.20.2). J'ai finalement trouvé une solution (note
file:
préfixe dans le chemin d'accès):Comme mentionné par Sulpha,
pour hadoop 1.2.1, il est important de remplacer la tâche-log4j.les propriétés qui est présent à l'intérieur hadoop-core.jar
Pour mon pseudo mode distribué,
Je n'ai pas pu imprimer les messages de débogage de mon cochon Udf et avait pour supprimer la tâche-log4j.propriétés de hadoop-core.jar et de le remplacer par une copie de l' $HADOOP_INSTALL/conf/log4j.les propriétés.
Utilisé le
et
Si il est déjà configuré propriétés log4j fichier dans le fichier jar. vous pouvez la remplacer par une simple mise -Dlog4j.configuration= avant-classpath
voici un exemple:
java -Dlog4j.configuration=..\conf\log4j.propriétés -classpath %CLASSPATH%
Mettre log4j.option de configuration dans l'enfant options java.
I. e.
Vous devez mettre log4j_debug.fichier de propriétés sur tous les serveurs esclaves dans un même chemin d'accès au répertoire comme /home/votrenom/log4j_debug.propriétés ou /tmp/log4j_debug.propriétés
Ce paramètre remplace mapred.enfant.java.opte paramètres.
Si vous voulez l'utiliser avec un autre des options comme -Xmx32m, ce qui signifie que 32MO de la taille du segment, puis procédez comme suit:
Dans Hadoop 1.2.1 il y a 2 fichiers de config: log4j.propriétés et tâche-log4j.propriétés
Donc, pour rendre l'exemple ci-dessus, le changement de tâche-log4j.propriétés qui ne sont pas dans log4j.propriétés
vous pouvez ajouter follwing ligne votre tâche-de log4j.propriétés: