gpt4 book ai didi

scala - 如何从Typesafe config配置系统属性或回退配置变量?

转载 作者:行者123 更新时间:2023-12-03 14:15:12 25 4
gpt4 key购买 nike

我的logback.xml配置文件中有带有默认值的变量,我希望能够有选择地从我的typesafe config application.conf文件中设置这些变量。

我正在使用一个jar部署应用程序,并且打包在可部署jar中的application.conf文件包含默认值。我在执行时通过-Dconfig.file=foo.conf来提供服务器特定配置文件的路径。

现在,我还可以传递-Dlog.level和其他变量来覆盖logback.xml中的默认值,而且我还必须在命令行上传递-Dfile.encoding=UTF-8。我正在寻找一种能够在typesafe配置中而不是在命令行中指定这些属性的方法。感觉应该有一种方法可以做到,但是我找不到神奇的词。

logback.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 

最佳答案

我选择以编程方式配置具有typesafe配置的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)
}

关于scala - 如何从Typesafe config配置系统属性或回退配置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com