Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to give environmental variable path for file appender in configuration file in log4j

I have a log4j.xml config file. and a RollingFileAppender to which I need to provide file path for storing logs. The problem is my code will be deployed on Unix machine as a runnable jar. So if I pass parameter something like this:

value=logs/messages.log" 

it creates folder named logs inside my HOME directory and writes all the messages to file inside this directory.

I have a environmental variable set to some value. I want to use path of that variable and write messages under that path. How can I achieve it?

I had tried using this:

value="${MY_HOME}/logs/message.log" 

but this does not work. Can anyone suggest a solution for this problem?

like image 201
Ankur Shanbhag Avatar asked Oct 25 '12 09:10

Ankur Shanbhag


2 Answers

When parsing its configuration file, the expression ${MY_HOME} will be expanded to the value of the system property named MY_HOME, not the system environment variable. There's a difference between the two.

To achieve this in a clean way, you'll have to add something like this to the JVM invocation line:

-DMY_HOME=$MY_HOME

That would define the Java system property MY_HOME to contain the value of the environment variable MY_HOME.

like image 54
Isaac Avatar answered Sep 20 '22 13:09

Isaac


you CAN give it environment variables. Just preppend env: before the variable name, like this:

value="${env:MY_HOME}/logs/message.log" 
like image 28
Daniel Estrada Avatar answered Sep 20 '22 13:09

Daniel Estrada