【问题标题】:scala change log4j.property output folder based on environmentscala根据环境更改log4j.property输出文件夹
【发布时间】:2017-05-16 03:26:59
【问题描述】:

我有一个带有 log4j.properties 文件的 scala 项目。我本地的输出文件夹与 dev、QA、prod 中的输出文件夹不同。在进行 SBT 构建时,有没有办法更新此文件的位置。

很久以前我使用过 ant,我们有一个 build.properties 文件,它将根据 build.properties 文件中的值替换属性文件中的值。

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    1) 当你的应用加载时,根据环境导出变量,

    //if dev
    System.setProperty("logger_file_name", "my-log-name-for-env-dev");
    // so on
    

    2) 或者使用 JVM 选项,

    java -Dlogger_file_name=my-log-name-for-env-dev  your.package.MainApplication
    

    然后在你的src/main/log4j.properties中,引用系统变量

    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=${logger_file_name}.log
    log4j.appender.file.MaxFileSize=10MB
    log4j.appender.file.MaxBackupIndex=10
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    

    3) 我更喜欢的第三种方式,原因很明显,

    维护一张environment to log file name 的地图,或者只是维护一种方法来了解您所在的环境,然后在加载应用程序时,设置正确的 log4j 配置。

    //对于 log4j

    val environment = System.getProperty("application.environment");    
    org.apache.log4j.PropertyConfigurator.configure("src/main/resources/log4j-"+environment+".properties")
    

    //对于log4j2

    import org.apache.logging.log4j.core.config.Configurator
    
    val environment = System.getProperty("application.environment");
    
    Configurator.initialize(null, "src/main/resources/log4j2-"+environment+".properties"));
    

    而且,你必须有如下结构

    src/main/resources/
        log4j2-dev.properties
        log4j2-e2e.properties
        log4j2-uat.properties
        log4j2-prod.properties
    

    【讨论】:

    • 我喜欢第三个选项,但是 ConfigurationSource 和 Configurator 在哪里??
    • @user373201 我最初添加了一个 log4j2,这与 log4j 中的不同。对 log4j 1.x 使用 PropertyConfigurator。答案已更新
    • 我做的方式是第三个,其中我有环境变量APPLICATION_ENVIRONMENT=prod,这是在我的/etc/profile 中使用export APPLICATION_ENVIRONMENT=prod 完成的
    猜你喜欢
    • 2018-04-29
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多