加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何从typesafe配置配置系统属性或回溯配置变量?

发布时间:2020-12-16 09:15:11 所属栏目:安全 来源:网络整理
导读:我的logback.xml配置文件中包含默认变量,我希望能够从我的typesafe config application.conf文件中选择设置这些变量. 我正在使用one-jar部署应用程序,并且打包在可部署的jar中的application.conf文件包含默认值.在执行时通过-Dconfig.file = foo.conf来提供
我的logback.xml配置文件中包含默认变量,我希望能够从我的typesafe config application.conf文件中选择设置这些变量.

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

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

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(bundled):

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)
  }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读