0

我正在使用 grails 并将我的 lo4j conf 如下定向到路径/var/log/eccount/dataSearch.log并添加 package( com.eccount.trending) 我想登录到info级别,

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
    }
}

现在,在位于src/java/我使用org.sl4j.Logger的 Java 类中,定义如下

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

你混淆了记录器和附加器。你已经dataSearch在你的 DSL 中声明了一个 appender,但你还没有将它附加到任何记录器上,所以消息都将发送到默认的stdoutappender。并且您的代码要求一个名为的记录器dataSearch,而您尚未配置该记录器。

如果您只想将com.eccount.trending消息发送到此附加程序,但将其他所有内容保留在默认标准输出中,那么您应该添加新行而不是添加com.eccount.trending到现有info

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

如果您希望所有内容都记录到该文件而不是标准输出,请添加

root {
  error 'dataSearch'
}

在这两种情况下,您都需要将代码更改为 dogetLogger("com.eccount.trending")而不是getLogger("dataSearch")

请注意,如果您确实采用该root方法并保留com.eccount.trending在现有info行中,那么您当前的配置有语法错误 - 您缺少逗号,它应该是

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