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にプッシュされます。
あなたはこのようなTomcatのログディレクトリへのパスをハードコーディングを避けることができますty( 'catalina.base')?: 'target')+ '/ logs/mylog.log'' - これはrun-appまたはTomcatで動作します。これは 'catalina.base'プロパティが設定されていないとログを書き込むためですターゲット/ログへ –
また、Tomcatのログはconsole loggerをcatalina.outにリダイレクトしませんか? –
アペンダーファイルの属性を '/var/log/tomcat6/mylog.log'に設定しました。これによってログファイルが作成され、ログに記録されます。しかし、私はまだ 'catalina.out'ログに上記のエラーが表示されます。誰も私がlog4jがこのエラーをスローするときにアクセスしようとしているファイルを知ることができる迅速な方法を知っていますか? – srkiNZ84