Using system environment variables in log4j xml configuration

前端 未结 5 1780
暖寄归人
暖寄归人 2020-11-30 00:59

Is it possible to reference system environment variables (as opposed to Java system properties) in a log4j xml configuration file?

I\'d like to be able to do somethi

5条回答
  •  渐次进展
    2020-11-30 01:42

    I think this is not supported, but basically you can do two things to bring in your environment variables:

    1. Use System.setProperty before Log4J gets configured

    2. Convert (your) environment variables to system properties in your launcher

    The first option basically boils down to this:

    for (Map.Entry entry : System.getenv().entrySet()) {
      System.setProperty(entry.getKey(), entry.getValue());
    }
    

    ... but the question is of course where to put this code. In particular if you're running within some sort of Tomcat container or similar, this might be troublesome.

    The other largely depends on your environment. Basically if you have a shell script that starts your app, you can write some shell magic to set all environment variables as properties, or just the ones you need, e.g.:

    java -DMY_ENV=$MY_ENV -DMY_OTHER_ENV=$MY_OTHER_ENV -cp ... com.example.Main
    

    It's also possible to alter your server startup scripts to support this, e.g. catalina.sh or similar.

提交回复
热议问题