Grails日志:多个记录器和附加器
我试图将Grails2.2.0应用程序配置为具有特定包的日志文件,然后将控制台输出用于其他所有内容。我还想确保日志文件中的任何内容都不会同时进入控制台,从而使它们完全分开。通读全文,我仍然有点困惑如何完成这项工作。有人能帮我举一个使用log4jdsl实现这一点的例子吗?我是在他的帮助下完成这项工作的。下面是我在Config.groovy中得到的结果:Grails日志:多个记录器和附加器,grails,logging,Grails,Logging,我试图将Grails2.2.0应用程序配置为具有特定包的日志文件,然后将控制台输出用于其他所有内容。我还想确保日志文件中的任何内容都不会同时进入控制台,从而使它们完全分开。通读全文,我仍然有点困惑如何完成这项工作。有人能帮我举一个使用log4jdsl实现这一点的例子吗?我是在他的帮助下完成这项工作的。下面是我在Config.groovy中得到的结果: log4j = { appenders { console name: 'stdout', layout: pattern
log4j = {
appenders {
console name: 'stdout', layout: pattern(conversionPattern: '%d{yyyy-MM-dd/HH:mm:ss.SSS} [%t] %x %-5p %c{2} - %m%n')
rollingFile name: 'extraAppender',
conversionPattern: '%d{yyyy-MM-dd/HH:mm:ss.SSS} [%t] %x %-5p %c{2} - %m%n',
maxFileSize: 1024,
file: '/tmp/logs/extra.log'
}
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'
trace additivity: false, extraAppender: 'extraLogger'
}
然后,在应该使用extraLogger的类中,我只是像这样使用记录器:
def extraLogger = LoggerFactory.getLogger('extraLogger')
这使我可以将更多的内容记录到控制台,并将一些其他特定的内容记录到另一个日志文件中,而不会在控制台日志中出现任何这些特定的内容。我在来自的帮助下完成了这项工作。下面是我在Config.groovy中得到的结果:
log4j = {
appenders {
console name: 'stdout', layout: pattern(conversionPattern: '%d{yyyy-MM-dd/HH:mm:ss.SSS} [%t] %x %-5p %c{2} - %m%n')
rollingFile name: 'extraAppender',
conversionPattern: '%d{yyyy-MM-dd/HH:mm:ss.SSS} [%t] %x %-5p %c{2} - %m%n',
maxFileSize: 1024,
file: '/tmp/logs/extra.log'
}
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'
trace additivity: false, extraAppender: 'extraLogger'
}
然后,在应该使用extraLogger的类中,我只是像这样使用记录器:
def extraLogger = LoggerFactory.getLogger('extraLogger')
这使我可以将更多的内容记录到控制台,并将一些其他特定的内容记录到另一个日志文件中,而不会在控制台日志中记录这些特定的内容。您是否想过深入了解log4j并阅读那边的文档?。。。下面是一些来自网络的例子,它们应该可以帮助您获得更多关于Grails项目中log4j配置的知识。看到了吗,或者你有没有想过深入到log4j中,阅读那边的文档?。。。下面是一些来自网络的例子,它们应该可以帮助您获得更多关于Grails项目中log4j配置的知识。请参阅or+1:这可能是最干净的方法。通过小心地处理可加性等,您可能会将包foo.bar的所有内容都放到额外的日志中,但随后您还必须将每个foo.bar.baz子包重新分配回stdout appender。单独的记录器方法简单得多,也不那么脆弱。我不会这样做,因为它会限制我为包/类获取不同记录器的方式,并且如果我想获取一些“额外”信息,会迫使我有两个记录器对象,但如果你愿意,一切都会好的:在我的情况下,拥有两个伐木工人正是我所需要的。我确信在很多情况下,这并不适合其他人的需要。@user605331不想因为我的消息而冒犯你,只需将我的2美分添加到此主题+1:这可能是最干净的方法。通过小心地处理可加性等,您可能会将包foo.bar的所有内容都放到额外的日志中,但随后您还必须将每个foo.bar.baz子包重新分配回stdout appender。单独的记录器方法简单得多,也不那么脆弱。我不会这样做,因为它会限制我为包/类获取不同记录器的方式,并且如果我想获取一些“额外”信息,会迫使我有两个记录器对象,但如果你愿意,一切都会好的:在我的情况下,拥有两个伐木工人正是我所需要的。我确信在很多情况下,这并不适合其他人的需要。@user605331不想因为我的消息而冒犯你,只需将我的2美分添加到此主题;