根据文件的 grails log4j 不同的附加程序

标签 grails log4j

我想根据模块记录到不同的附加程序...

我有 3 个附加程序:控制台,一个用于记录 Controller 和服务的滚动文件,以及另一个用于记录作业中的一些内容的滚动文件。我只想记录其滚动文件的作业代码,并仅记录另一个滚动文件的 Controller 和服务。

所以这是我的 grails log4j 配置:

development {   
    def catalinaBase = System.properties.getProperty('catalina.base')
    if (!catalinaBase) catalinaBase = '.'
    def logDirectory = "${catalinaBase}/logs/AmbienticWebsite"


    log4j = {

        appenders {
            console name:'stdout', layout:pattern(conversionPattern: '%c{2} [%p] - %m%n')
            appender new DailyRollingFileAppender(
                    name: "rollingFileGrailsApp",
                    file: "${logDirectory}/GrailsApp.log",
                    datePattern: "'.'yyyy-MM-dd",
                    layout: pattern(conversionPattern: commonPattern)
            )
            appender new DailyRollingFileAppender(
                name: "rollingFileImport",
                file: "${logDirectory}/Imports.log",
                datePattern: "'.'yyyy-MM-dd",
                layout: pattern(conversionPattern: commonPattern)
            )
        }

        root {
            error 'stdout', 'rollingFileImport', 'rollingFileGrailsApp' // both stdout and AmbienticWebsite_dev.log are filled by logging information
            additivity = false
        }

          debug rollingFileImport: 'ambienticwebsite.EventImportJob',
                                    'time2marketing.time2marketingImportService',
                                    'eventImportData.DiscomImportDataService',
                                    'eventImportData.EventImportService'

          info rollingFileGrailsApp: 'ambienticwebsite', 
                'ambienticwebsite.jobManagement.AmbienticJobListener',
                'BootStrap',
                'grails.app.controllers',
                'grails.app.services'       
    }
}

使用此配置,日志将写入两个滚动文件和标准输出。如果我从根目录中删除滚动附加程序,滚动文件将保持为空,即使为文件组指定附加程序也是如此。

有人建议将日志分离到附加程序中吗?

最佳答案

我认为您需要将 additivity: false 添加到自定义 appender。

debug rollingFileImport: [foo, bar, baz]
      additivity: false

info rollingFileGrailsApp: [foo1, bar1, baz1]
     additivity: false

引用Logger Inheritance在 grails 中。

关于根据文件的 grails log4j 不同的附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16894504/

相关文章:

java - 使用lombok时设置log4j级别

grails - Spring Security 正在重定向到生产服务器上的 localhost

运行 'grails tomcat deploy' 时出现 java.io.IOException

list - 如何在groovy/grails中获取列表中一个元素的值

java - log4j 滚动文件追加器 - 多线程问题?

java - 文件名在 log4j 中滚动文件

Grails:如何为多列创建命名的唯一约束?

grails - 没有国际化消息热部署无法在开发人员中使用

Java log4j 并不总是记录最后一行

java - EAR 的 Log4j2.xml 配置文件位置