【问题标题】:grails separating info logginggrails 分离信息记录
【发布时间】:2013-09-05 20:21:45
【问题描述】:

我正在尝试将信息、警告和错误日志分开,我进行了以下配置,但在信息文件上继续在同一文件上记录其他类型的日志,我已经尝试搜索其他主题但我没找到解决办法,谁能帮忙?

def logLayoutPattern = new PatternLayout("%d{yyyy-MM-dd/HH:mm:ss.SSS} %x %-5p %c{2} - %m%n")
appenders {
     appender new DailyRollingFileAppender(name: "perfil",threshold: Level.INFO,file: "/tmp/logs/file_perfil.log",datePattern: "'.'yyyy-MM-dd",layout: logLayoutPattern)
     appender new DailyRollingFileAppender(name: "errors",threshold: Level.ERROR,file: "/tmp/logs/file_errors.log",datePattern: "'.'yyyy-MM-dd",layout: logLayoutPattern)
     appender new DailyRollingFileAppender(name: "warn",threshold: Level.WARN,file: "/tmp/logs/file_warn.log",datePattern: "'.'yyyy-MM-dd",layout: logLayoutPattern)
}

info perfil: ["grails.app.controllers.com.app.PerfilController"]
warn warn: 'grails.app'

error errors: ['org.codehaus.groovy.grails.web.servlet',
       'org.codehaus.groovy.grails.web.pages',
       'org.codehaus.groovy.grails.web.sitemesh',
       'org.codehaus.groovy.grails.web.mapping.filter',
       'org.codehaus.groovy.grails.web.mapping',
       'org.codehaus.groovy.grails.commons',
       'org.codehaus.groovy.grails.plugins',
       'org.codehaus.groovy.grails.orm.hibernate',
       'org.springframework',
       'org.hibernate',
       'net.sf.ehcache.hibernate']
root {
    error 'errors'
    additivity = false
    warn 'warn'
    additivity = false
    info 'perfil'
    additivity = false
}

【问题讨论】:

    标签: grails logging log4j


    【解决方案1】:

    您需要在自定义附加程序而不是根记录器上添加additivity: false

    这样就足够了:

    info perfil: ["grails.app.controllers.com.app.PerfilController"]
         additivity: false
    
    warn warn: 'grails.app'
         additivity: false
    
    error errors: ['org.codehaus.groovy.grails.web.servlet',
           'org.codehaus.groovy.grails.web.pages',
           'org.codehaus.groovy.grails.web.sitemesh',
           'org.codehaus.groovy.grails.web.mapping.filter',
           'org.codehaus.groovy.grails.web.mapping',
           'org.codehaus.groovy.grails.commons',
           'org.codehaus.groovy.grails.plugins',
           'org.codehaus.groovy.grails.orm.hibernate',
           'org.springframework',
           'org.hibernate',
           'net.sf.ehcache.hibernate']
         additivity: false
    
    root {
        error 'errors'
        warn 'warn'
        info 'perfil'
    }
    

    所有的loggers默认都从root继承,additivity默认为true。

    【讨论】:

    • @paulo 如果您有上述设置,我想您在根记录器中不需要它们。你可以从根目录中删除并查看。我坚信这将是设置。当我有机会时会再次测试它。顺便说一句,你看到了什么差异?
    • 我尝试删除根块并进行了测试,但这样一来,即使我放在控制器上的消息也没有记录在日志上。在应该只显示信息日志的日志上出现应用程序的警告和错误。
    • @Paulo 我认为 'warn' appender 覆盖了 'perfil' appender,因为在这两种情况下,您都希望记录 grails.app 包结构。删除 warn appender 并查看它的行为。我将只有perfil 用于grails.app,它将负责您的控制器info 以及warn 日志记录。
    • 我删除了 'warn' 的所有配置,但它仍然是登录警告,我不知道我做错了什么,在控制器上我正在加载这样的日志 'private static final log = LogFactory.getLog ("perfil")' 但如果我在其他控制器上加载其他日志,即使我创建其他附加程序,它也会登录同一个文件
    • @paulo 你不需要在控制器中创建log,它默认为'log'。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2016-12-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 2017-06-27
    相关资源
    最近更新 更多