Получите целые журналы потока в Grails с Log4j

Предположим, у меня есть класс задания cron как SampleTestJob, который получит список администраторов, вызвав метод utilService findAllAdmins. В каждом из этих классов добавлены журналы. Мне нужно получить журналы для всего этого потока, которые будут напечатаны в отдельный файл журнала. Для этого я использовал RollingFileAppender, используя TimeBasedRollingPolicy, так что каждый день будет создаваться резервная копия zip. В Config.groovy я перечислил имена классов для всего этого потока, таких как SampleTestJob, UtilService. Когда SampleTestJob выполняется, логи SampleTestJob и UtilService будут напечатаны в мой файл журнала. Моя проблема в том, что я хочу, чтобы весь поток SampleTestJob печатался, и да, он печатается. Но когда findAllAdmins вызывается другим классом в этом примере AdminController, он также печатается в том же файле журнала. Как мне это остановить? Есть ли лучший способ реализовать это?

Также без перечисления классов как ["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"]

}

0 ответов

Другие вопросы по тегам