根据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.properties
将SimpleLogger
读取为普通Java Properties文件,因此无法在其中解析对环境变量的引用。
但是,您可以在名为org.slf4j.simpleLogger.logFile
的环境变量中提供路径,该环境变量也会被SimpleLogger
读取,并且优先于通过simplelogger.properties
进行的配置。
关于java - 我可以在SLF4J Simple的props文件中指定环境变量吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19278703/