grails - 配置log4j grails

标签 grails logging log4j config

我是grails的新手,我需要为我的应用程序配置loggind。我开始在grails应用程序中配置log4j,并且收到以下错误消息,但我不知道是什么原因造成的:

log4j:ERROR Property missing when configuring log4j: Environment

有人知道是什么原因吗?下面是我的代码!
def myappLogLevel = "DEBUG"
def myappLogPattern = "%d{yyyy-MM-dd/HH:mm:ss.SSS} [%t] %x %-5p %c{2} - 
%m%n"
def log4jFileName = System.properties.getProperty('catalina.base', '.') + 
"/logs/myapp.log"

environments {
    development {
       log4jFileName = "logs/myapp.log"
    }
test {
    log4jFileName = "logs/myapp.log"
}


log4j = {

def logLayoutPattern = new PatternLayout(myappLogPattern)

appenders {
    appender new DailyRollingFileAppender(name: "myappLog",
            threshold: Level.toLevel(myappLogLevel),
            file: log4jFileName,
            datePattern: "'.'yyyy-MM-dd",   //Rollover at midnight each day.
            layout: logLayoutPattern
    )
    if (Environment.current == Environment.DEVELOPMENT ||
            Environment.current == Environment.TEST) {
        appender new ConsoleAppender(name: "console",
                threshold: Level.toLevel(myappLogLevel),
                layout: logLayoutPattern
        )
    }
}
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
        'org.springframework',
        'org.hibernate.cache',
        'org.hibernate',
        'net.sf.ehcache.hibernate'
'grails'
'groovyx.net.http'

warn 'org.springframework',
        'org.hibernate',
        'grails.plugins.springsecurity',
        'groovyx.net.http'

debug 'grails.plugins.springsecurity',
        'grails.plugin.springcache',
        'com.myapp',
        'org.codehaus.groovy.grails.plugins.springsecurity',
        'org.apache.http.headers',
        'grails.app.services',
        'grails.app.domain',
        'grails.app.controllers',
        'grails.plugin.databasemigration',
        'liquibase'

    List<String> loggers = []
    loggers.add('myappLog')
    if (Environment.current.name == "development" ||
        Environment.current.name == "test") {
          loggers.add('console')
    }
    root {
        error loggers as String[]
        additivity = true 
    }

}

最佳答案

您可能可以使用日志配置DSL构造在环境上分支,而无需显式访问Environment。

environments {
    development { loggers.add('console') }
    test { loggers.add('console') }
}

就是说,我不确定您要在其余的配置中要完成什么,因此可能会有一种更优雅的处理方式。

关于grails - 配置log4j grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641073/

相关文章:

java - Log4j编码问题

Java 应用程序将日志记录相关的错误消息打印到标准输出

syntax - 在 elasticsearch 中向 appender 添加过滤器 - 记录 yml 语法

Grails 3 Quartz插件: Job doesn't start

grails - 基于属性文件连接bean

linux - 按日期将 Linux 终端输出记录到文件?

sql - 在 PostgreSQL 8.4 中记录 SELECT 语句

python - 在 Windows 下如何共享日志文件?

grails - Hibernate session.flush()和grailsObject.save(flush:true)之间在数据库上执行查询的区别

java - Grails Rendering插件可从云或字符串中转换html/gsp