2011-07-05 17 views
2

tomcat6サーバで本番環境を使用してgrailsアプリケーションを起動するたびに、/var/log/tomcat6/catalina.outに次のエラーが表示されます。grails tomcatログにlog4jを設定する方法

log4j:ERROR setFile(null,true) call failed. 
java.io.FileNotFoundException: stacktrace.log (Permission denied) 
... 
... 

これは、log4jがログファイルを作成しようとしており、必要な権限を持っていないためです。

私のアプリケーションのログファイルは、既存のtomcatログ(/var/log/tomcat6/catalina.out)に移動するか、/ var/log/tomcat6ディレクトリ内の別のファイルに移動することが理想的です。

最小限の設定でlog4jログの場所を変更するにはどうすればよいですか?つまり、完全なアペンダーを独自の出力パターンで定義したくない場合は、ログファイルの場所を変更したいだけです。レベルinfoで、この場合では、すべてのログイベントを

log4j = { 
    appenders { 
     file name:'file', file: '/var/log/tomcat6/mylog.log' 
    } 
    root { 
     info 'stdout', 'file' 
    } 
} 

をし、上記(つまりTomcatがに追加されます両方のファイル/var/log/tomcat6/mylog.logとstdoutにプッシュされます。

答えて

3

あなたは、セットアップログはgrails-app/conf/Config.groovyで設定することにより、ファイルを使用することができます自分でcatalina.out

参照: `ファイル名:「ファイル」ファイル:(System.getProper http://grails.org/doc/latest/guide/3.%20Configuration.html#3.1.2%20Logging

+11

あなたはこのようなTomcatのログディレクトリへのパスをハードコーディングを避けることができますty( 'catalina.base')?: 'target')+ '/ logs/mylog.log'' - これはrun-appまたはTomcatで動作します。これは 'catalina.base'プロパティが設定されていないとログを書き込むためですターゲット/ログへ –

+0

また、Tomcatのログはconsole loggerをcatalina.outにリダイレクトしませんか? –

+0

アペンダーファイルの属性を '/var/log/tomcat6/mylog.log'に設定しました。これによってログファイルが作成され、ログに記録されます。しかし、私はまだ 'catalina.out'ログに上記のエラーが表示されます。誰も私がlog4jがこのエラーをスローするときにアクセスしようとしているファイルを知ることができる迅速な方法を知っていますか? – srkiNZ84

関連する問題