web-dev-qa-db-ja.com

log4jの構成ファイルでファイルアペンダーの環境変数パスを指定する方法

log4j.xml構成ファイル。ログを保存するためのファイルパスを提供する必要があるRollingFileAppender。問題は、コードが実行可能なjarとしてUnixマシンにデプロイされることです。したがって、次のようなパラメータを渡すと:

value=logs/messages.log"

hOMEディレクトリ内にlogsという名前のフォルダを作成し、このディレクトリ内のファイルにすべてのメッセージを書き込みます。

環境変数を何らかの値に設定しています。その変数のパスを使用し、そのパスの下にメッセージを書きたいです。どうすれば達成できますか?

私はこれを使ってみました:

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

しかし、これは機能しません。誰でもこの問題の解決策を提案できますか?

38
Ankur Shanbhag

構成ファイルを解析するとき、式${MY_HOME}は、システムプロパティ named MY_HOME、システムではない環境変数。 2つの間に違いがあります。

これをクリーンな方法で実現するには、次のようなものをJVM呼び出し行に追加する必要があります。

-DMY_HOME=$MY_HOME

それはJavaシステムプロパティMY_HOME環境変数の値を含むMY_HOME

49
Isaac

環境変数を指定できます。次のように、変数名の前にenv:を追加します。

value="${env:MY_HOME}/logs/message.log"
34
Daniel Estrada

この構文はlog4j 2.Xでのみ文書化されているため、正しいバージョンを使用していることを確認してください。

    <Appenders>
    <File name="file" fileName="${env:LOG_PATH}">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
        </PatternLayout>
    </File>
</Appenders>

http://logging.Apache.org/log4j/2.x/manual/lookups.html#EnvironmentLookup

9
Shoham

私はこれを機能させました。

  1. 私のlog4j.propertiesで。指定しました

log4j.appender.file.File = $ {LogFilePath}

  1. eclipseで-JVM引数

-DLogFilePath = C:\ work\MyLogFile.log

7
hmehandi

Java -DLOG_DIR=${LOG_DIR} -jar myjar.jar "param1" "param2" ==> xmlに「value = "$ {LOG_DIR} /log/clientProject/project-error.log」がある場合、cmd行に

2

Log4jエントリ

#-ログに記録するファイルとログ形式

log4j.appender.file.File = $ {LOG_PATH} /mylogfile.log

Java program
String log4jConfPath        = "path/log4j.properties";
File log4jFile              = new File(log4jConfPath);
if (log4jFile.exists()) {
    System.setProperty("LOG_PATH", "c:/temp/");
    PropertyConfigurator.configure(log4jFile.getAbsolutePath());
    logger.trace("test123");
}
0
Thiyag Mohan

多分... :

datestamp=yyyy-MM-dd/HH:mm:ss.SSS/zzz
layout=%d{${datestamp}} ms=%-4r [%t] %-5p %l %n%m %n%n

# infoFile 
log4j.appender.infoFile=org.Apache.log4j.RollingFileAppender
log4j.appender.infoFile.File=${MY_HOME}/logs/message.log
log4j.appender.infoFile.layout=org.Apache.log4j.PatternLayout
log4j.appender.infoFile.layout.ConversionPattern=${layout}
0
KimiRai23