2011-01-19 4 views
1

私はアプリログメッセージがSTDOUTにも流出しないようにしようとしています。Log4Jのログメッセージがapp-logに記録され、stdoutがgrailsアプリケーションのため

私はロギングの以下の構成を持っている:私のアプリケーションファイルに出力している

log4j = { 

    appenders { 
    rollingFile name: 'applog', file: "${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}application.log".toString(), layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p%c{1} - %m%n'), maxFileSize: '1MB' 
    file name: 'stacktrace', file: "${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}stacktrace.out".toString(), layout: pattern(conversionPattern: '%c{2} %m%n') 
    console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n') 
    } 

    error stacktrace: "StackTrace" 

    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 'grails.app' 

    root { 
    info applog 
    error 'stdout' 
    additivity=false 
    } 
} 

ログは大丈夫です。問題は、catalina.outがそれぞれの行を複製することです。私はcatalina.outがあまり大きくならないようにしたい。そして、私はcatalina.outにWARN以上のものしか必要としません。これはどうすればいいですか?

更新:上記の質問を更新しました。以前は、メッセージがcatalinaに2回記録されていることを示しました。私はそれを修正する方法を考え出した。しかし、それはまだ私がしたくないメッセージを一度記録します。私はWARNメッセージだけが必要です。

更新2:私は問題を知っていると思っていますが、解決方法はわかりません。 catalina.outログファイルは上記の設定では設定されていません。デフォルトのcatalina.sh起動スクリプトでは、すべての標準出力がcatalina.outファイルに書き込まれます。したがって、appLogに書き込まれているログメッセージもstdoutに書き込まれています。実際の問題は、上記の設定ファイルに基づいて、なぜ私のappLogの内容もstdoutに出力されていることです。私が思う

答えて

1

注:RTFM !!!!

私は間違ったバージョンのGrailsロギングドキュメントを読んでいました。最新バージョンはhereで、ロギングについてはよく説明されています。私のニーズも少し変わった。すべてのERROR(以上)はcatalina.out(別名stdout)に記録されています。私のappLogはINFOのすべてを適切に記録します。

私はcatalina.outするすべての警告メッセージをログに記録したい場合は、私は次の行を追加します。

root{ 
    warn() 
} 

以下が標準出力からすべての私のアプリケーションログを削除します。

log4j = { 
    appenders { 
    rollingFile name: 'applog', file: ${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}application.log".toString(), layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n'), maxFileSize: '10MB' 
    console name: 'stdout', layout:pattern(conversionPattern: '%c{2} %m%n'), threshold: org.apache.log4j.Level.WARN 
    } 
    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', 'myapp', 'com.myapp'] 
} 
0

は、私は私はあなたが参照していると思うアペンダをご覧くださいあなたの部位特異的のために上記の警告とするために構成ロガーが表示されていないオン何が起こっているのか見ていますが、設定する必要がありますそれを使用するのに必要なレベルのロガー。 hereを参照してください。あなたのサイトがmysite.some.packagesであれば

たとえば、あなたがレベルですべてのメッセージをログに記録するロガーを作成することができます> = rollingfileのサイトで警告:自己へ

warn rollingFile: "mysite" 
+0

私はより多くの情報を入れて問題について – Tihom

関連する問題