2

コントローラーと and という名前のサービスがApiControllerありApiService.groovyます。errorアペンダーを使用してとinfoログをファイルに書き込むように Config.groovy ファイルをセットアップしました。サービスを呼び出すlog.info("foo")と、STDOUT にのみ書き込まれ、ファイルには書き込まれません。ファイルは作成されますが、書き込まれることはありません。

これが私のConfig.groovyです

// log4j configuration
def isProd = Environment.current == Environment.PRODUCTION

def catalinaBase = System.properties.getProperty('catalina.base')
if (!catalinaBase) catalinaBase = '.'   // just in case

def logDirectory = "${catalinaBase}/logs"
if (!isProd) {
    logDirectory = 'logs'
}

log4j = {
    // Example of changing the log pattern for the default console
    // appender:
    //
    appenders {
        appenders {
            console name: 'debug,info,warn,error,stdout,logfile', layout: pattern(conversionPattern: '%c{2} %m%n')
            appender new RollingFileAppender(name: "apiLog", maxFileSize: 1024, file: "${logDirectory}/api.log")
            appender new RollingFileAppender(name: "pingDupLog", maxFileSize: 1024, file: "${logDirectory}/pingDup.log")
            appender new RollingFileAppender(name: "fraudLog", maxFileSize: 1024, file: "${logDirectory}/fraud.log")
            appender new RollingFileAppender(name: "appLog", maxFileSize: 1024, file: "${logDirectory}/app.log")
        }
    }

    error   apiLog: ['grails.app.services.com.ono.catfish.ApiService',
                     'grails.app.controllers.com.ono.catfish.ApiController'],

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

    info    apiLog: ['grails.app.services.com.ono.catfish.ApiService',
                     'grails.app.controllers.com.ono.catfish.ApiController']

    root {
        info 'stdout', 'appLog'
    }
}

そして、ここに私のサービスがありますgrails-app/com/ono/catfish/ApiService.groovy:

package com.ono.catfish

class ApiService {

    def ping(Map params) {

        log.info("Received submission: ${params.toMapString()}")
        log.error("Testing Error Log")

    }
}

誰かが私が間違っていることを理解するのを手伝ってくれますか?

ありがとう!

4

1 に答える 1

0

私の推測では、このようにロガーapiLogに追加する必要があります。root

root {
    info 'stdout', 'appLog', 'apiLog'
}

また、コンソールのアペンダー名が間違っています"stdout"

于 2012-05-01T21:23:40.487 に答える