以编程方式将log4j配置为在Grails2中运行时登录到自定义文件

以编程方式将log4j配置为在Grails2中运行时登录到自定义文件,grails,logging,log4j,Grails,Logging,Log4j,我正在使用Grails2.2.4,log4j是以一种相当标准的方式配置的(),它工作得非常好(问题末尾的细节) 我希望在一个单独的文件中有关于具有特定类的对象发生的任何事情的完整信息,所以我希望能够像这样做,但我不知道如何在grails中做到这一点。做这样的事情会很好 package com.mydomain.service import org.apache.commons.logging.LogFactory class SampleService { private stat

我正在使用Grails2.2.4,log4j是以一种相当标准的方式配置的(),它工作得非常好(问题末尾的细节)

我希望在一个单独的文件中有关于具有特定类的对象发生的任何事情的完整信息,所以我希望能够像这样做,但我不知道如何在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'
}

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

谢谢你的输入,这个链接很有趣;尽管我认为每次我想记录一些东西时都要更改配置有点过火,并且会给代码增加不必要的复杂性,这对于其他人来说是很难理解的。也许我会放弃这个想法。再次感谢。