我正在使用grails并将我的lo4j conf指向路径/var/log/eccount/dataSearch.log
,并添加了包(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/
的我的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
错误级别适用于控制台(但不能写入文件)。
答案 0 :(得分:0)
你让记录器和追加者感到困惑。您已经在DSL中声明了一个名为dataSearch
的appender,但您没有将其附加到任何记录器,因此这些消息都将转到默认的stdout
appender。您的代码要求提供一个名为dataSearch
的 logger ,您尚未配置。
如果您只想将com.eccount.trending
消息发送到此附加程序,但将其他所有内容保留为默认标准输出,则不应将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'