【问题标题】:log file not being created in tomcat未在 tomcat 中创建日志文件
【发布时间】:2016-02-04 05:59:58
【问题描述】:

我打算在将应用程序部署到生产环境中的 tomcat 时为其创建一个日志文件。在开发过程中,我可以在 intellij 控制台中看到日志。

所以我基于上述意图创建了以下 DSL(从 SO 中获取)

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

// default for all environments
log4j = { root ->
    appenders {
        rollingFile name:'stdout', file:"${logDirectory}/myapp.log".toString(), maxFileSize:'100KB'
        rollingFile name:'stacktrace', file:"${logDirectory}/myapp_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 {
    production {
        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.mypackage'
            root.level = org.apache.log4j.Level.INFO
        }
    }
}

请注意上面块中的println。我已验证找到catalina.base 的路径并输出到catalina.out

但是,当我部署我的应用程序时 - 没有创建日志文件。此外,我的log.info 日志正在写入catalina.out

问题

  • 在部署应用程序时,我还需要做什么才能创建日志文件?
  • rollingFile name:'stacktrace' 有什么作用?它是否将堆栈跟踪记录到单独的文件中?如果是这样,它是内置的 log4j 吗?

【问题讨论】:

  • 您正在部署生产实例,并且在生产 log4j 中,您仅使用 stdout 覆盖附加程序,该附加程序完全记录到控制台。如果您希望创建文件,请将文件附加程序移动到 production 块。

标签: java grails log4j log4j2


【解决方案1】:

复制您的附加程序

environments {
    production {
        log4j = { root ->
            appenders {
                rollingFile name:'stdout', file:"${logDirectory}/myapp.log".toString(), maxFileSize:'100KB'
                rollingFile name:'stacktrace', file:"${logDirectory}/myapp_stack.log".toString(), maxFileSize:'100KB'
            }
            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.mypackage'
            root.level = org.apache.log4j.Level.INFO
        }
    }
}

第二个问题,是的,请参考https://stackoverflow.com/a/12393628/2048098

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多