Grails WAR на Tomcat "Log4J" вообще не работает - PullRequest
5 голосов
/ 14 февраля 2010

У меня log4j DSL правильно настроен в моем Config.groovy в приложении grails. Запуск приложения с помощью Grails run-app создает отличную запись в журнал, как я указал в DSL. Однако после войны с Grails для создания файла войны и его развертывания на tomcat ведение журнала просто исчезает. Я не вижу, чтобы это работало нигде, кроме консоли tomcat, показывающей миллионы операторов журнала на уровне отладки и ничего особенного для моего входа в файлы журналов.


log4j = {
        appenders {
                 appender new org.apache.log4j.DailyRollingFileAppender(name: "tomcatLog", datePattern: "'.'yyyy-MM-dd", file: "${logDirectory}/snm.log".toString(), layout: pattern(conversionPattern: '[%d{yyyy-MM-dd hh:mm:ss.SSS}] %p %c{5} %m%n'))
        }
        root {
            info 'stdout', 'tomcatLog'
            additivity = true
        }
        info    'grails.app',
                'grails.app.controller',
                'grails.app.bootstrap',
                'grails.app.service',
                'grails.app.task',
                'commons',
                'jsontwitter'
    }

Можете ли вы объяснить выше DSL? Он отправляет журналы классов. * И jsontwitter. * В указанный файл журнала, но без контроллера, журнал служб сохраняется в файле.

Спасибо, Алам Шер

Ответы [ 2 ]

7 голосов
/ 18 февраля 2010

Вам необходимо выяснить, какой каталог журналирования использует Tomcat. Это делается следующим фрагментом grails-app / conf / Config.groovy:

def catalinaBase = System.properties.getProperty('catalina.base')
if (!catalinaBase) catalinaBase = '.'   // just in case
def logDirectory = "${catalinaBase}/logs"

// default for all environments
log4j = { root ->
     appenders {
             rollingFile name:'stdout', file:"${logDirectory}/${appName}.log".toString(), maxFileSize:'100KB'
             rollingFile name:'stacktrace', file:"${logDirectory}/${appName}_stack.log".toString(), maxFileSize:'100KB'
    }

    error  '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'
    root.level = org.apache.log4j.Level.WARN
}

// special settings with production env
environments {
    development {
        log4j = { root ->
            appenders {
                       console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n")
            }
            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'
            debug  'com.netjay'
            root.level = org.apache.log4j.Level.INFO
        }
    }
}
0 голосов
/ 04 марта 2010

Существует также ошибка в jira: http://jira.codehaus.org/browse/GRAILS-5666: в Run-war есть конфликты путей к классам.

Марк Палмер говорит: ведение журнала убивается в приложениях, использующих плагины, которые определяют deps, которые наследуют «глобальный»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...