2011-01-18 4 views
2

J'ai été très frustré à ce sujet.Grails log4J question de connexion sur Linux

Je suis en train de faire ce qui suit:

  • journal toutes les applications liées à des journaux qui sont application.log INFO ou au-dessus
  • Comprendre ce qui contrôle la configuration pour catalina.out
  • journal ne WARN à catalina.out

Je cours mon serveur sur Ubuntu et j'ai la configuration par défaut pour tomcat qui inclut un répertoire de conf avec un logging.properties. J'ai renommé ce fichier à l.p afin qu'il ne soit pas en conflit. (Je ne sais pas si cela est une bonne idée)

Dans mon fichier de configuration, j'ai:

def catalinaBase = System.properties.getProperty('catalina.base') 
if (!catalinaBase) catalinaBase = '.' // just in case 
def logDirectory = "${catalinaBase}${File.separator}logs" 
println "Log Directory: ${logDirectory}" 

log4j = { 

    appenders { 
    rollingFile name: 'applog', file: "${logDirectory}${File.separator}application.log", layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n'), maxFileSize: 1024 
    } 

    error 'org.codehaus.groovy.grails.web.servlet', // controllers 
      'org.codehaus.groovy.grails.web.pages', // GSP 
      'org.codehaus.groovy.grails.web.sitemesh', // layouts 
      'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
      'org.codehaus.groovy.grails.web.mapping', // URL mapping 
      'org.codehaus.groovy.grails.commons', // core/classloading 
      'org.codehaus.groovy.grails.plugins', // plugins 
      'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration 
      'org.springframework', 
      'org.hibernate', 
      'net.sf.ehcache.hibernate' 

    warn 'org.mortbay.log' 

    info applog: 'grails.app' 
    root { 
    info 'applog' 
    } 

} 

En conséquence, je reçois trois journaux:

catalina.2011-01-17.log catalina.out localhost.2011-01-17.log 

Le catalina.out a la sortie suivante:

Log Directory: /var/lib/tomcat6/logs 
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.PropertyUtils). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
log4j:ERROR WARNING: Exception occured configuring log4j logging: Cannot invoke org.apache.log4j.FileAppender.setFile - argument type mismatch 

Je ne vois pas le application.log dans le répertoire du fichier journal. Toute aide serait appréciée Je suis vraiment frustré à ce sujet.

Une chose, dans les fenêtres tout sortir à la console et le application.log est créé dans le répertoire .grails\1.3.5\projects\<appnmae>\tomcat

Répondre

4

Votre problème est évidemment qu'il ya une incompatibilité de type. Spécifiquement, log4j attend une chaîne quand vous lui donnez un GString. Essayez de remplacer:

"${logDirectory}${File.separator}application.log" 

Avec ceci:

"${logDirectory}${File.separator}application.log".toString() 

EDIT: S'il vous plaît lire this BUG

+0

J'ai eu deux questions: 1) Je avais besoin d'un toString() 2) le changement logging.properties lp WASN pas assez. J'avais besoin de le sortir du répertoire conf. Merci @ Mike Axiak – Tihom

+0

Mike (et Thom), j'ai testé cela avec Grails 1.3.7 et il semble bien fonctionner sans l'appel explicite '.toString()'. J'ai donc résolu ce bug. –