logging - 将日志输出发送到 grails 1.3.2 中的不同文件

标签 logging grails log4j appender

我想在特定的 appender 中输出我的包或类的日志。
但是所有内容都打印到根记录器中。

这是我的配置:

log4j = {
    appenders {
        console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
        file name:'grailslog', file:'grails.log', threshold:org.apache.log4j.Level.DEBUG
        file name:'mylog', file:'mylog.log', threshold:org.apache.log4j.Level.DEBUG
    }

    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'

    warn   'org.mortbay.log'

    debug  'grails.app'

    debug  mylog: 'my.package', additivity: true

    root {
      error 'grailslog'
      additivity = true
    }
}

我也试过这个语法:
log4j = {
    appender.stdout = "org.apache.log4j.ConsoleAppender"
    appender.'stdout.layout'="org.apache.log4j.PatternLayout"
    appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n'

    appender.mylog= "org.apache.log4j.DailyRollingFileAppender"
    appender.'mylog.File' = "mylog.log"
    appender.'mylog.layout' = "org.apache.log4j.PatternLayout"
    appender.'mylog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n'

    appender.grailslog = "org.apache.log4j.DailyRollingFileAppender"
    appender.'grailslog.File' = "grails.log"
    appender.'grailslog.layout' = "org.apache.log4j.PatternLayout"
    appender.'grailslog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n'

    rootLogger="error,stdout,grailslog"

    logger {
      grails="info,stdout,grailslog"
      my.package="debug,mylog"
    }
}

但这不再适用于当前的 grails 版本。

一个简短的更新:

Grails 有一个新的 log-DSL(领域特定语言)文档。
因此上面的代码有一个错误的语法。

他们写:

... the name of the logger is 'grails.app.(type).(className)' ...

最佳答案

我设法使用了我的其他日志文件。

我没有使用带有包名称的记录器,而是使用自定义名称并以此初始化我的记录器。

debug  mylog: 'myLog', additivity: true

[...]

def log = Logger.getLogger("myLog")

关于logging - 将日志输出发送到 grails 1.3.2 中的不同文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3995534/

相关文章:

tomcat - 在 Apache Tomcat 中记录 URL

python - 如何在 Mac OS X 中记录 python 程序事件

Azure Log Analytics 1 个日志条目 = 1 行

Grails:如果 session 有时空闲,则触发任何操作

variables - 如何让 Tomcat 的logging.properties 识别我的 Catalina 变量?

java - Log4J 仅将一个类附加到附加程序

logging - datadog 替换或手动分配日志值

Grails:组织 i18n 包

linux - Grails 的 JAVA_HOME 问题

java - 如何知道log4j的输出来自哪里?