根据this link,SLF4J可以通过在运行时类路径上放置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


提前致谢!

最佳答案

由于simplelogger.propertiesSimpleLogger读取为普通Java Properties文件,因此无法在其中解析对环境变量的引用。

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

关于java - 我可以在SLF4J Simple的props文件中指定环境变量吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19278703/

10-13 04:19