簡體   English   中英

logback groovy中的變量替換

[英]Variable Substitution in logback groovy

我正在使用logback.xml,並且變量以類似以下的字符串加載:

<FileNamePattern>${logDirectory}/${logFileName}.%d{yyyy-MM-dd}.%i.html</FileNamePattern>

在調用我的jar之前,在.bat文件中設置了logDirectory和logFileName的位置。

set logFileName=foobar

但是現在,我處理了常規問題。 它很棒,而且比xml更可讀。 但是變量不再擴展。

appender("FILE", RollingFileAppender) {
file = "${logDirectory}/${logFileName}.html"
    rollingPolicy(TimeBasedRollingPolicy) {
        fileNamePattern = "${logDirectory}/${logFileName}.%d{yyyy-MM-dd}.%i.html"
        ...
    }
...
} 

路徑現在為null/null :'(

最壞:以下測試引發異常:

if ("${logConsole}" == "true") {

有人看到如何使它起作用嗎?

-編輯添加完整的logback.groovy

/*
 * The configuration use the following variables :
 * logDirectory => The log folder
 * logFileName => The log file name
 * logConsole => true console activation.
 **/

import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.classic.html.HTMLLayout
import ch.qos.logback.core.ConsoleAppender
import ch.qos.logback.core.encoder.LayoutWrappingEncoder
import ch.qos.logback.core.rolling.RollingFileAppender
import ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy

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

def LOG_DIRECTORY = System.getProperty("logDirectory")
def LOG_FILE_NAME = System.getProperty("logFileName")
def LOG_CONSOLE = System.getProperty("logConsole")

appender("FILE", RollingFileAppender) {
    file = "${LOG_DIRECTORY}/${LOG_FILE_NAME}.html"
    rollingPolicy(TimeBasedRollingPolicy) {
        fileNamePattern = "${LOG_DIRECTORY}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}.%i.html"
        timeBasedFileNamingAndTriggeringPolicy(SizeAndTimeBasedFNATP) {
            maxFileSize = "100MB"
        }
        maxHistory = 5
    }
    encoder(LayoutWrappingEncoder) {
        layout(HTMLLayout) {
            pattern = "%level%date%logger{36}%msg"
        }
    }
}
appender("STDOUT", ConsoleAppender) {
    withJansi = true
    encoder(PatternLayoutEncoder) {
        pattern = "%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n"
    }
}
logger("org", INFO)
logger("net", INFO)
logger("freemarker", INFO)

// We don't care about the bean creation at least it's more than a warn
logger("org.springframework.beans.factory", WARN)

root(OFF, ["FILE"])

if (LOG_CONSOLE == "true") {
    root(OFF, ["FILE","STDOUT"]);
}

System.getProperty()調用將檢索在Java命令行上使用-D設置的屬性,而在.bat文件中,您將設置外殼程序/環境變量。

嘗試在logback.groovy文件中使用System.getenv()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM