Grails日志:多个记录器和附加器

Grails日志:多个记录器和附加器,grails,logging,Grails,Logging,我试图将Grails2.2.0应用程序配置为具有特定包的日志文件,然后将控制台输出用于其他所有内容。我还想确保日志文件中的任何内容都不会同时进入控制台,从而使它们完全分开。通读全文,我仍然有点困惑如何完成这项工作。有人能帮我举一个使用log4jdsl实现这一点的例子吗?我是在他的帮助下完成这项工作的。下面是我在Config.groovy中得到的结果: log4j = { appenders { console name: 'stdout', layout: pattern

我试图将Grails2.2.0应用程序配置为具有特定包的日志文件,然后将控制台输出用于其他所有内容。我还想确保日志文件中的任何内容都不会同时进入控制台,从而使它们完全分开。通读全文,我仍然有点困惑如何完成这项工作。有人能帮我举一个使用log4jdsl实现这一点的例子吗?

我是在他的帮助下完成这项工作的。下面是我在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')

这使我可以将更多的内容记录到控制台,并将一些其他特定的内容记录到另一个日志文件中,而不会在控制台日志中出现任何这些特定的内容。

我在来自的帮助下完成了这项工作。下面是我在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美分添加到此主题;