以编程方式配置log4j以在Grails 2中

时间:2016-01-30 18:54:57

标签: grails logging log4j

我使用Grails 2.2.4和log4j以相当标准的方式配置(http://grails-dev.blogspot.com/2012/09/setting-up-log4j-configuration-in.html)并且它运行良好(问题末尾的详细信息)。

我希望能够在单独的文件中获得有关特定课程对象发生的任何事情的完整信息,因此我希望能够执行类似configure log4j to log to custom file at runtime之类的操作,但我可以'弄清楚如何在grails中做到这一点。做一些像

这样的事情会很棒
package com.mydomain.service

import org.apache.commons.logging.LogFactory

class SampleService {

    private static final log = LogFactory.getLog(this)

    def index(Long id) {
        log.setFileName("object-${id}.log")
        log.info("The log message.")
    }
}

(我知道方法 setFileName 不存在;我正在谈论一般方法)它甚至可能吗?

而且,如果有可能,你能告诉我一些关于表现的事吗?每天记录大约500(<1000行)文件会减慢应用程序的执行速度吗?

提前致谢。

我的log4j配置:

在代码中我记录这样的消息:

package com.mydomain.service

import org.apache.commons.logging.LogFactory

class SampleService {

    private static final log = LogFactory.getLog(this)

    def index() {
        log.info("The log message.")
    }
}

包含

的配置文件
log4j = {
    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.springframework',
        'org.hibernate',
        'groovyx.net.http'

    all 'myApp'
}

1 个答案:

答案 0 :(得分:0)

您可以创建一个可在运行时修改的外部配置文件,并使grails加载该文件。这样,您可以在运行时动态修改应用程序中的日志记录。看一下这个link