Tomcat“Log4J”上的 Grails WAR根本不工作

发布于 2024-08-21 01:03:56 字数 985 浏览 2 评论 0原文

我在 grails 应用程序的 Config.groovy 中正确配置了 log4j DSL。使用 grails run-app 运行应用程序会转储完美的日志记录,正如我在 DSL 中指定的那样。然而,在进行 grails war 生成 war 文件并将其部署到 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 吗?它将 commons.* 和 jsontwitter.* 类日志发送到指定的日志文件,但没有控制器,服务日志保存在文件中。

谢谢, 阿拉姆谢尔

I have log4j DSL correctly configured in my Config.groovy in a grails applicaiton. Running the application with grails run-app dumps perfect logging as I specified in the DSL. However after doing a grails war to generate a war file and deploying it to tomcat, logging just disappears. I can't see it working anywhere, except tomcat console showing millions of log statements at debug level and nothing going specific to my logging into log files.


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'
    }

Can you please explain the above DSL? It send commons.* and jsontwitter.* classes logs to designated log file but no controller, services log is saved in file.

Thanks,
Alam Sher

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖上的星空 2024-08-28 01:03:56

您需要找出 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
        }
    }
}

You need to find out, what logging directory tomcat uses. This is done by the following snippet of 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
        }
    }
}
甜是你 2024-08-28 01:03:56

jira 上也存在一个错误: http://jira.codehaus.org/browse/GRAILS- 5666:Run-war 有一些类路径冲突。

Marc Palmer 说:在使用定义继承“全局”的 deps 的插件的应用程序中,日志记录被终止

There is also a bug on jira : http://jira.codehaus.org/browse/GRAILS-5666 : Run-war has some classpath conflicts.

Marc Palmer says :logging is killed in apps using plugins that define deps that inherit "global"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文