0

私はgrailsを使用しており、以下のようにlo4j confをパスに向けており、レベルにログしたい/var/log/eccount/dataSearch.logpackage()を追加しています。com.eccount.trendinginfo

log4j = {
    // Example of changing the log pattern for the default console
    // appender:
    //
    appenders {
        rollingFile name: 'dataSearch', maxFileSize: 1024, file: '/var/log/eccount/dataSearch.log', layout: pattern(conversionPattern: "%d{HH:mm:ss} %C %m%n")
    }

    info  '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',
           'com.eccount.trending'

    warn   'org.mortbay.log'

    root {
      info 'dataSearch'
      //additivity = true
    }
}

さて、にある私のJavaクラスでは、以下に定義されているようsrc/java/に使用しましたorg.sl4j.Logger

org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger("dataSearch");
// code flows here
logger.info("elasticSearchsBuilder", elasticSearchsBuilder);

/var/log/eccount/dataSearch.logしかし、アプリケーションの実行後は何も表示されません。次のアクセスがあります。

$ ls -l /var/log/eccount/
total 0
-rw-r--r-- 1 prayag prayag 0 Oct 25 12:59 dataSearch.log

コンソールではエラー レベルが機能します (ただし、ファイルへの書き込みはできません)。

4

1 に答える 1

0

ロガーとアペンダーを混同しています。DSL で呼び出されるアペンダーを宣言しましたがdataSearch、ロガーにアタッチしていないため、メッセージはすべてデフォルトのstdoutアペンダーに送られます。そして、コードは、構成していないというロガーを要求しdataSearchています。

com.eccount.trendingメッセージだけをこのアペンダーに送信し、他のすべてをデフォルトの stdout に残したい場合はcom.eccount.trending、既存のinfo行に追加する代わりに、新しい行を追加する必要があります

info dataSearch:['com.eccount.trending'], additivity:false

すべてを stdout ではなくそのファイルに記録する場合は、追加します

root {
  error 'dataSearch'
}

どちらの場合も、getLogger("com.eccount.trending")代わりに行うようにコードを変更する必要がありますgetLogger("dataSearch")

rootアプローチを使用com.eccount.trendingして既存の行を残す場合、現在の構成に構文エラーがあることに注意してinfoください-コンマがありません。

       'net.sf.ehcache.hibernate',
       'com.eccount.trending'
于 2013-10-31T08:51:16.970 に答える