2017-01-12 48 views
0

我無法讓log4j在使用Grails 3.2.3的項目中工作。 我的目標是獲得Spring安全插件的詳細日誌,因爲我有一些問題,想知道發生了什麼(雖然我提供了正確的憑據,但我無法登錄)。log4j與Grails 3.2.3:我沒有得到任何日誌記錄

添加以下行grails-app/conf/application.groovy

log4j = { 
    all 'org.springframework' 
     'org.grails.plugins:spring-security-core' 
    debug 'grails.app' 

    appenders { 
     file name: 'file', file:'logs/logging.log' 
    } 

    root { 
     all 'stdout', 'file' 
    } 
} 

但是,當我運行grails run-app或在交互模式run-app的應用程序,創建任何文件,並且在控制檯無輸出,即使我嘗試登錄並且登錄失敗(當然應該創建一些日誌消息,尤其是因爲日誌級別爲「全部」)。

我不是log4j的專家。我以前從未使用過它。 我通讀了一些教程和文檔,但它們都與普通的java程序相關,而不是Grails。

我的Grails大部分配置都在YAML(application.yml)中,只有spring和log4j設置在單獨的application.groovy中。據我瞭解,Grails將它們合併到一個配置對象中。

我在配置中錯過了什麼?

回答

2

默認情況下,在Grails 3.x中使用默認的logback進行日誌記錄。爲了激活它,您的grails-app/conf必須有logback.groovy。通常它看起來像:

import grails.util.BuildSettings 
import grails.util.Environment 
import ch.qos.logback.classic.encoder.PatternLayoutEncoder 
import ch.qos.logback.core.ConsoleAppender 
import ch.qos.logback.core.FileAppender 

// See http://logback.qos.ch/manual/groovy.html for details on configuration 
appender('STDOUT', ConsoleAppender) { 
    encoder(PatternLayoutEncoder){ pattern = '%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n' } 
} 

root INFO, ['STDOUT'] 

logger 'org.springframework.security.web.authentication.rememberme', DEBUG 

def targetDir = BuildSettings.TARGET_DIR 
if(Environment.developmentMode && targetDir){ 
    appender('FULL_STACKTRACE', FileAppender){ 
    file = "${targetDir}/stacktrace.log" 
    append = true 
    encoder(PatternLayoutEncoder){ pattern = '%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n' } 
    } 
    logger 'StackTrace', ERROR, ['FULL_STACKTRACE'], false 
} 

這裏的春天SEC的了rememberMe服務記錄與DEBUG級到標準輸出

+0

非常感謝!出於某種原因,我錯過了Grails文檔中的這些信息。現在創建日誌。還有一些很好的調整要做,但它的作用得益於你。 – waldiphil