我的变量中有默认值logback.xml
配置文件,我希望能够从我的类型安全配置中选择设置这些变量application.conf
file.
我正在使用 one-jar 部署应用程序,并且application.conf
打包在可部署 jar 中的文件包含默认值。我通过-Dconfig.file=foo.conf
执行时提供特定于服务器的配置文件的路径。
现在我也可以通过-Dlog.level
和其他变量来覆盖我的默认值logback.xml
,而且我还必须通过-Dfile.encoding=UTF-8
在命令行上。我正在寻找一种能够在类型安全配置中而不是在命令行上指定这些属性的方法。感觉应该有办法做到这一点,但我找不到神奇的词语。
日志回.xml:
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path:-logs/}/${log.file:-myLog.log}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 15 days' worth of history -->
<maxHistory>${log.history.days:-15}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="${log.level:-INFO}">
<appender-ref ref="FILE" />
</root>
</configuration>
application.conf(捆绑):
akka {
log-config-on-start = false
event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
}
特定于服务器的 app.conf 示例:
include "/application.conf"
akka.log-config-on-start = true
log.level = WARN // this is what I'd LIKE to be able to do
我目前如何运行该应用程序:
java -Dfile.encoding=UTF-8 -Dconfig.file=myApp.conf -Dlog.level=WARN -jar myApp_2.10-0.1-one-jar.jar
我选择以编程方式配置具有类型安全配置的 logback。事实证明这很容易。
def enableRemoteLogging(config: Config) = {
val ctx = LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext]
val gelf = new GelfAppender
gelf.setGraylog2ServerHost(config.getString("logging.remote.server"))
gelf.setUseLoggerName(true)
gelf.setUseThreadName(true)
gelf.setUseMarker(true)
gelf.setIncludeFullMDC(true)
gelf.setContext(ctx)
gelf.start()
LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)
.asInstanceOf[ch.qos.logback.classic.Logger]
.addAppender(gelf)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)