2012-06-16 5 views
2

J'ai cette application de scala qui est très simple. Tout ce qu'il fait est initialise un enregistreur et fait un logger.info ("bonjour"). J'ai un fichier log4j.properties dans le chemin de la classe qui a les paramètres suivantslog4j: WARN Aucun appender n'a pu être trouvé

# Root logger option 
log4j.rootLogger=INFO, stdout 

# Direct log messages to stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 

Cependant, lorsque je tente d'exécuter l'application. J'obtiens l'erreur log4j: WARN Aucun appender n'a pu être trouvé pour logger (app.TestApp $). log4j: WARN Veuillez initialiser correctement le système log4j.

Qu'est-ce qui me manque? Cependant, je reçois les journaux imprimés si j'ai hadoop-core.jar dans le classpath (oui, il y a aussi un log4j)

Répondre

6

Votre fichier de configuration log4J n'est pas dans le classpath, même si vous le pensez. La meilleure façon de résoudre ce problème est d'ajouter -Dlog4j.debug aux paramètres VM, puis Log4J retracera l'algorithme qu'il utilise pour trouver sa configuration:

scala -cp {yourclasspath} -Dlog4j.debug {yourscalaentrypoint} 

Malheureusement la réponse de @Jens ne vous aidera pas lorsque vous Exécutez un programme Scala car Scala n'utilise pas la propriété système Java standard pour stocker son classpath. Lorsque vous devez imprimer le chemin de classe utilisé pour le programme Scala, vous devez utiliser quelque chose comme this technique.

1

On dirait que votre fichier de propriétés ne se trouve pas sur le classpath. Imprimez le classpath (propriété System java.class.path) pour vérifier ce qui se passe.

Questions connexes