Groovy Script et log4j

Été chercher ici et là à la recherche d'un exemple de travail de log4j l'enregistrement du dossier dans un script Groovy.

Explicite pas la classe (c'est juste un script).
Pas de graal.
Pas de console...de fichier.

Juste un simple script groovy avec log4j.

Log4j est le meilleur pour ce (groovy) ou d'autres journalisation des bibliothèques de mieux?

Peut quelqu'un m'indiquer un exemple ou la démo de comment c'est fait? J'ai réussi à obtenir pour la console, mais pas de fichier.

Serait bien si la configuration log4j était dans une config.groovy fichier en tant que bien, depuis que je suis en utilisant un fichier de configuration pour d'autres choses.

Mise à JOUR

Grâce à neversleepz exemple, j'ai le texte suivant fonctionne parfaitement:

config.groovy fichier:

log4j {  

  appender.stdout = "org.apache.log4j.ConsoleAppender"    
  appender."stdout.layout"="org.apache.log4j.PatternLayout"    
  appender.scrlog = "org.apache.log4j.FileAppender"    
  appender."scrlog.layout"="org.apache.log4j.PatternLayout"
  appender."scrlog.layout.ConversionPattern"="%d %5p %c{1}:%L - %m%n"         
  appender."scrlog.file"="rootscript.log" 
  rootLogger = "debug,scrlog,stdout"         
}

Et mon script:

import org.apache.log4j.*
import groovy.util.logging.*   

def config = new ConfigSlurper().parse(new File('config.groovy').toURL())        
PropertyConfigurator.configure(config.toProperties())

Logger log = Logger.getInstance(getClass())

//Need to set log level as described here: 
//http://groovy.329449.n5.nabble.com/log4j-annotation-not-working-td4368806.html
log.level = Level.INFO

//this will NOT print/write as the loglevel is info
log.debug 'Executing Script.'
//this will print
log.info 'Simple sample to show log INFO field is injected.'
log.warn 'Simple sample to show log WARN field is injected.'
log.error 'Simple sample to show log ERR field is injected.'        

Merci pour cette!

J'ai également configuré pour un RollingFileAppender, et DailyRollingFileAppender je vais mettre ceux qui sont ici:

log4j {
  //  
  appender.stdout = "org.apache.log4j.ConsoleAppender"
  appender."stdout.layout"="org.apache.log4j.PatternLayout"
  //
  appender.scrlog = "org.apache.log4j.DailyRollingFileAppender"
  appender."scrlog.DatePattern"="'.'yyyy-MM-dd"
  appender."scrlog.Append"="true"
  appender."scrlog.File"="rootscript.log"
  appender."scrlog.layout"="org.apache.log4j.PatternLayout"
  appender."scrlog.layout.ConversionPattern"="%d %5p %c{1}:%L - %m%n"

  rootLogger="debug,scrlog,stdout"
}

et

log4j {
  //  
  appender.stdout = "org.apache.log4j.ConsoleAppender"
  appender."stdout.layout"="org.apache.log4j.PatternLayout"
  //
  appender.scrlog = "org.apache.log4j.DailyRollingFileAppender"
  appender."scrlog.DatePattern"="'.'yyyy-MM-dd"
  appender."scrlog.Append"="true"
  appender."scrlog.File"="rootscript.log"
  appender."scrlog.layout"="org.apache.log4j.PatternLayout"
  appender."scrlog.layout.ConversionPattern"="%d %5p %c{1}:%L - %m%n"

  rootLogger="debug,scrlog,stdout"
  logger.ProcessLogger="debug,scrlog"
}
Quel est le problème spécifique? Au pire, vous devriez être en mesure de configurer l'enregistrement comme tout autre projet Java.

OriginalL'auteur Bean | 2013-11-08