2

根据这个链接SLF4J Simple 可以通过simplelogger.properties在运行时类路径上放置一个文件来配置。

一个例子simplelogger.properties

org.slf4j.simpleLogger.logFile=/home/myuser/.myapp/logs/myapp.log
org.slf4j.simpleLogger.defaultLogLevel=INFO
org.slf4j.simpleLogger.levelInBrackets=false

但是,如果我希望我的应用程序定义它自己的环境变量,比如 ,MYAPP_HOME并将其设置为/home/myuser/.myapp/logs. 然后我将如何MYAPP_HOME从内部引用变量simplelogger.properties?这甚至可能吗?

例如,我可以这样做:

org.slf4j.simpleLogger.logFile=${MYAPP_HOME}/logs/myapp.log
org.slf4j.simpleLogger.defaultLogLevel=INFO
org.slf4j.simpleLogger.levelInBrackets=false

注意:以上不起作用并导致以下异常:

Could not open [${MYAPP_HOME}/logs/myapp.log]. Defaulting to System.err
Reported exception:
java.io.FileNotFoundException: ${MYAPP_HOME}/logs/myapp.log (No such file or directory)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:99)
    at org.slf4j.impl.SimpleLogger.computeTargetStream(SimpleLogger.java:224)
    at org.slf4j.impl.SimpleLogger.init(SimpleLogger.java:205)
    at org.slf4j.impl.SimpleLogger.<init>(SimpleLogger.java:268)
    at org.slf4j.impl.SimpleLoggerFactory.getLogger(SimpleLoggerFactory.java:57)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
    ... rest of stack trace omitted for brevity

提前致谢!

4

1 回答 1

1

由于simplelogger.properties被 读取为普通的 Java属性文件SimpleLogger,因此不会在其中解析对环境变量的引用。

但是,您可以在名为 的环境变量中提供路径,该变量org.slf4j.simpleLogger.logFile也可以通过 读取SimpleLogger并优先于配置simplelogger.properties

于 2013-10-09T20:54:26.087 回答