使用Log4j在Grails中获取整个流日志
假设我有一个cron作业类SampleTestJob,它将通过调用utilService findAllAdmins方法来获取管理员列表。 在每个类中都添加了日志。 我需要将整个流程的日志打印到单独的日志文件中。 为此,我使用了使用TimeBasedRollingPolicy的RollingFileAppender,这样每天都可以创建一个zip备份。 在Config.groovy中,我列出了整个流的类名,例如SampleTestJob、UtilService。 执行SampleTestJob时,SampleTestJob和UtilService的日志将打印到我的日志文件中。 我的问题是,我只想打印SampleTestJob的整个流程,是的,它会被打印出来。 但是当findAllAdmins在本例中被另一个类AdminController调用时,它也会打印在同一个日志文件中。 我该怎么阻止这一切?有没有更好的方法来实现这一点 另外,如果不将整个流程中的类列为使用Log4j在Grails中获取整个流日志,grails,log4j,rollingfileappender,Grails,Log4j,Rollingfileappender,假设我有一个cron作业类SampleTestJob,它将通过调用utilService findAllAdmins方法来获取管理员列表。 在每个类中都添加了日志。 我需要将整个流程的日志打印到单独的日志文件中。 为此,我使用了使用TimeBasedRollingPolicy的RollingFileAppender,这样每天都可以创建一个zip备份。 在Config.groovy中,我列出了整个流的类名,例如SampleTestJob、UtilService。 执行SampleTestJob时,
[“grails.app.jobs.SampleTestJob”,“grails.app.services.UtilService”]
,那么它可以识别所有日志并将其打印到日志文件中
class SampleTestJob{
def utilService
def execute() {
log.info "Beginning SampleTestJob."
List<Admin> adminList = utilService.findAllAdmins()//Calling the findAllAdmins of utilService.
log.info "Finished SampleTestJob."
}
}
class UtilService{
def findAllAdmins() {
log.info "Beginning findAllAdmins."
//Implementation to get all the admins
log.info "Finished findAllAdmins."
}
}
class AdminController{
def utilService
def listAdmins() {
log.info "Beginning listAdmins."
List<Admin> adminList = utilService.findAllAdmins()//Calling the findAllAdmins of utilService.
log.info "Finished listAdmins."
}
}
log4j = {
def logDir = 'target' + '/logs'
def logPattern = '%d [%t] %-5p %c{2} %x - %m%n'
def jobRollingFile = new RollingFileAppender(name: 'SampleLogs', layout: pattern(conversionPattern: logPattern))
def jobRollingPolicy = new TimeBasedRollingPolicy(fileNamePattern: "$logDir/Logs/Sample.%d{yyyy-MM-dd}.gz", activeFileName: "$logDir/Logs/Sample.log")
jobRollingPolicy.activateOptions()
jobRollingFile.setRollingPolicy jobRollingPolicy
appenders {
appender jobRollingFile
}
info additivity: false, SampleLogs : ["grails.app.jobs.SampleTest", "grails.app.services.UtilService"]
}