2

(Tomcatを使用して)書き込む4つの異なるログを作成しようとしています。これがコードです(私はそれを実験しているので、いくつかの奇妙なものがあります):

log4j = {

    appenders {
        rollingFile  name:'infoLog', file:'/logs/info.log', threshold: org.apache.log4j.Level.INFO
        rollingFile  name:'warnLog', file:'/logs/warn.log', threshold: org.apache.log4j.Level.WARN
        rollingFile  name:'errorLog', file:'/logs/error.log', threshold: org.apache.log4j.Level.ERROR
        rollingFile name:'debugLog', file:'/logs/debug.log', threshold: org.apache.log4j.Level.DEBUG
    }
    root {
        info 'infoLog', 'errorLog', 'warnLog', 'debugLog'
        error 'errorLog'
        warn 'warnLog'
        debug 'debugLog'        
    }

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

アプリをデプロイして実行すると、catalina.outで次のようになります。

log4j:ERROR setFile(null、true)呼び出しが失敗しました。java.io.FileNotFoundException:java.io.FileOutputStream。(FileOutputStream.java:177)のjava.io.FileOutputStream.openAppend(ネイティブメソッド)の/logs/info.log(そのようなファイルまたはディレクトリはありません)。 FileOutputStream。(FileOutputStream.java:102)..。

(作成しようとしているログごとに同じメッセージが表示されます)。私は何かが足りないのですか?

ありがとう

4

1 に答える 1

0

この特定のエラー メッセージは、おそらく、/logsディレクトリが存在しないか、Grails アプリを実行しているユーザー ID では書き込めないことを意味します。

しかし、より一般的には、ルート ロガーの定義が間違っています。すべてのアペンダーにアタッチされた 1 つのログ レベル (より正確なルールを指定しないロガーにデフォルトで使用するレベル) が必要なだけです。

root {
    error 'infoLog', 'errorLog', 'warnLog', 'debugLog'
}

さまざまなアペンダーのしきい値により、それぞれが適切なメッセージdebugLogを受け取ることが保証されます。この構成では、すべてのメッセージ (デバッグ、情報、警告、エラー) を受け取ります。infoLog情報、警告、エラーを受け取ります。warnLog警告とエラーを受け取ります。エラーメッセージのみをerrorLog受け取ります。

于 2012-11-15T15:35:29.557 に答える