让我们假设我有一个cron作业类作为SampleTestJob,它将通过调用utilService findAllAdmins方法获取管理员列表。 在每个类中都添加了日志。 我需要将整个流的日志打印到单独的日志文件中。 为此,我使用了TimeBasedRollingPolicy的RollingFileAppender,这样每天都会创建一个zip的备份。 在Config.groovy中,我列出了整个流程的类名,例如SampleTestJob,UtilService。 执行SampleTestJob时,SampleTestJob和UtilService的日志将打印到我的日志文件中。 我的问题是,我只希望打印SampleTestJob的整个流程,是的,它打印出来。 但是当AdminAtroller在此示例中由另一个类调用findAllAdmins时,它也会被打印在同一个日志文件中。 我怎么阻止这个?有没有更好的方法来实现这个?
同样没有列出整个流程的["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."
}
}
def sampleTestJob = new SampleTestJob() sampleTestJob.execute()
Config.groovy中
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"]
}