2016-10-20 4 views
4

zu werfen Ich habe eine Springboot-Anwendung und beim Protokollieren mit Logback mit ich groovy Config bin immer folgende Fehlermeldung:Logback geben Fehler Kann nicht Objekt '3 GB' mit der Klasse 'java.lang.String' in die Klasse 'ch.qos.logback.core.util.FileSize'

Failed to instantiate [ch.qos.logback.classic.LoggerContext] 
Reported exception: 
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '3 gb' with class 'java.lang.String' to class 'ch.qos.logback.core.util.FileSize' 
    at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:405) 
    at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:319) 

Meine groovy Konfigurationsdatei:

import ch.qos.logback.classic.PatternLayout 
import static ch.qos.logback.classic.Level.INFO 

scan("60 seconds") 
def LOG_PATH = "logs" 
def LOG_ARCHIVE = "${LOG_PATH}/archive" 



appender("RollingFile-Appender", RollingFileAppender) { 
    file = "${LOG_PATH}/rollingfile.log" 
    rollingPolicy(TimeBasedRollingPolicy) { 
     fileNamePattern = "${LOG_ARCHIVE}/Rainbow_Notifications.log%d{yyyy-MM-dd}.log" 
     maxHistory = 30 
     totalSizeCap = "3 gb" 
    } 
    encoder(PatternLayoutEncoder) { 
     pattern = "%msg%n" 
    } 
} 


logger("com.something", INFO, ["RollingFile-Appender"]) 

Hinweis: ich habe auch diese Strings versucht: als Dateigröße: 3gb, 3 gb, 3GB, 3096mb, 3096 mb, 3096 MB

Antwort

6

Try Ersetzen der Linie

totalSizeCap = "3 gb" 

mit

totalSizeCap = FileSize.valueOf("3 gb") 

Sie verlassen nun die Linie import ch.qos.logback.core.util.FileSize; auch hinzufügen müssen.

Das setTotalSizeCap method of the TimeBasedRollingPolicy class benötigt ein FileSize Objekt, keine Zeichenfolge. Die statische valueOf Methode in FileSize sollte die erforderliche Umwandlung von String zu FileSize vornehmen.

+0

Es funktioniert auch für mich, danke. Aber warum in [diesem Artikel] (https://dzone.com/articles/logback-configuration-using-groovy) Autor String-Literal verwendet? –

+0

@SergeyLinnik: Ich weiß es nicht. Ich werde fragen. –

Verwandte Themen