Ниже приведена моя конфигурация регистрации. Он регистрирует именно то, что я хочу, но он записывает его только в файл. Я хотел бы видеть ту же информацию на консоли. Я попробовал несколько вариантов, но с каждой вариацией я могу получить информацию только в консоли или файле, а не в обоих.Использование нескольких регистраторов в одном приложении
def appName = grails.util.Metadata.current.'app.name'
def catalinaBase = System.properties.getProperty('catalina.base')
catalinaBase = catalinaBase ?: "."
def logDirectory = "${catalinaBase}${File.separator}logs${File.separator}${appName}"
// log4j configuration
log4j = {
appenders {
rollingFile name: 'stdout', file: "${logDirectory}${File.separator}${appName}.log".toString(), maxFileSize: '100MB' // Use the same file for stdout and stacktrace
rollingFile name: 'stacktrace', file: "${logDirectory}${File.separator}${appName}.log".toString(), maxFileSize: '100MB' // Use the same file for stdout and stacktrace
}
warn 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core/classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
all 'grails.app.controllers.test',
'grails.app.domain.test',
'grails.app.services.test',
'grails.app.taglib.test',
'grails.app.conf.test',
'grails.app.filters.test'
}
Спасибо! Я думаю, что это получает. Мне любопытно, однако, почему это плохо, чтобы иметь два приложения для входа в тот же файл? Нет ли шансов на блокировку? Мне легче отлаживать stacktrace, когда он находится в том же контексте, что и информация из журнала приложений. – ubiquibacon
@ubiquibacon Вы _might_ уходите с этим (я не уверен) для простого FileAppender, но для скользящего файла я буду беспокоиться о том, что произойдет, если оба приложения попытаются одновременно скопировать файл журнала (или, что еще хуже , в несколько разное время - appender 1 переименовывает app.log в app.log.1 и открывает новый app.log, appender 2 затем переименовывает этот новый app.log в app.log.1, и вы потеряли исходный файл журнала). –
Теперь я вижу, что по умолчанию кажется, что в 'stdout' включен частичный стек. Это на самом деле все, что я хотел, поэтому мне не нужно объединять полный стек в журнал приложений, чтобы получить то, что я хочу. Спасибо, что помог мне на правильном пути. – ubiquibacon