我想根据模块记录到不同的附加程序...
我有 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/