2016-07-05 10 views
0

コントローラから私のカスタムメッセージを特定のファイルに記録するのがGrails 2.4.5になっています。コントローラでコントローラからのGrailsログ

log4j = { 
    /* 
    * Log levels 
    off 
    fatal 
    error 
    warn 
    info 
    debug 
    trace 
    all 
    */ 
    appenders { 
     console name:'stdout', threshold: org.apache.log4j.Level.INFO 
     rollingFile name: 'applog', maxFileSize: 1024, file: (System.getProperty('catalina.base') ?: 'target') + '/logs/' + appName + '.log', 
      layout: pattern(conversionPattern: "[%d{HH:mm:ss:SSS}] %-5p %c{2}: %m%n") 
     environments { 
      development { 
       rollingFile name: 'grailsfile', maxFileSize: 4096, file: 'target/logs/grails.log' 
       file name: 'rootlog', file: 'target/logs/root.log'    
      } 
     } 
    } 
    root { error 'stdout'} 
    environments { 
     development { 
      debug additivity: false, 'grails.app' 
      root { error 'stdout', 'rootlog'} //override the root 
      warn additivity: false, grailsfile: 
       ['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'] 
      debug additivity: false, applog: 
      ['grails.app.controllers', 'grails.app.domain', 'grails.app.services']  
     } 
//  production { 
//   root { error() } 
//   warn "grails.app.controllers" 
//   warn "grails.app.domain" 
//   warn "grails.app.services" 
//   warn additivity: false, applog: 'grails.app' 
//  } 
    } 
} 

私を示し
println "Debug log enabled?: " + log.debugEnabled 
log.debug "First piggy wrote to Debug" 
log.info "Second piggy wrote to Info" 
log.error "And the third piggy wrote to Error" 

は、コンソールの「デバッグログは?:真の有効」これは私が設定部分で持っているものです。しかし、メッセージはどこにも記録されていません。 Grailsの内部ログは "grailsfile"にログオンし、エラーも "rootlog"に送られます。しかし、appName.logは空のままです。 私が間違っていることは何ですか?私は今、最も重要なを設定している私の要求を簡素化するために

UPDATE

。私はライン

log.debug "First piggy wrote to Debug" 
log.info "Second piggy wrote to Info" 
log.error "And the third piggy wrote to Error" 

がアペンダのapplogと(ファイル) で終わるしたいので、log4jは今だけあります

log4j = { 
    appenders { 
     console name:'stdout'//, threshold: org.apache.log4j.Level.INFO 
     rollingFile name: 'applog', maxFileSize: 1024, file: (System.getProperty('catalina.base') ?: 'target') + '/logs/' + appName + '.log', 
      layout: pattern(conversionPattern: "[%d{HH:mm:ss:SSS}] %-5p %c{2}: %m%n") 
    } 
    environments { 
     development { 
      debug 'grails.app' 
      debug additivity: false 
       applog: ['grails.app.controllers', 'grails.app.domain', 'grails.app.services']  
     } 
    } 
} 

しかし、それでも、私は(他のソースからもエラー)私のログの行を取得します私のカスタムログファイルが空のままである間コンソールに。

私は、単に(オンリー)私のログラインをapplog appenderに最初のステップとして渡したいと思っています。どのようにこれを達成するためのヒント?

+0

: #エラー - 中>標準出力(+ rootlog devch) #コントローラからの私のログ - > applog(dev) #全てのgrails stuff - > grailsfile(dev) – BioBier

答えて

1

あなたは、エラーレベルとより高いと、すべてのログがtarget/logs/root.log しようとしている、開発モードでアプリケーションを実行している場合はそれをここで設定されています。
file name: 'rootlog', file: 'target/logs/root.log' ...
root { error 'stdout', 'rootlog'} //override the root

development閉鎖ためですグローバル設定を上書きします。あなたがappName.log内のすべてのログを見たい場合は、下のログレベルを設定し、このようアペンダ変更する必要があり :
root { info 'stdout', 'applog'} //override the root

+0

これは私が達成したいことではありません。 私は開発のためにしたい:エラーとstdout + rootlogで、私の<= applogのデバッグとgrailsfileへのすべてのgrails stuff。 生産については(上記のコメントは分かっていますが、開発者には最初に働きたがっています)、<= warnのログはgrailsfileに送られます。 – BioBier

0

その間、私は、このプロパティは私のカスタムログメッセージのトラブルを作ったことを把握できます。これに変更

def appName = grails.util.Metadata.current.'app.name' 
... 
file: (System.getProperty('catalina.base') ?: 'target') + '/logs/' + appName + '.log', 

作品:私はこのような分割さログを取得するように、より明確にするため

log4jFileName = (System.properties.'catalina.base') + "/logs/${appName}.log" 
... 

file: "${config.log4jFileName}", 
関連する問題