62

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

value=logs/messages.log"

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

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

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

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

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

4

9 に答える 9

59

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

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

-DMY_HOME=$MY_HOME

MY_HOMEこれにより、環境変数の値を含むJavaシステムプロパティが定義されますMY_HOME

于 2012-10-25T10:22:38.383 に答える
53

あなたはそれに環境変数を与えることができます。次のように、変数名の前にenv:を追加します。

value="${env:MY_HOME}/logs/message.log"
于 2014-02-21T15:07:14.767 に答える
12

この構文はlog4j2.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

于 2015-03-29T13:52:08.810 に答える
10

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

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

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

  1. Eclipseで-JVM引数

-DLogFilePath = C:\ work \ MyLogFile.log

于 2015-06-30T12:58:06.927 に答える
2

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

于 2014-05-21T15:50:07.390 に答える
0

多分... :

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}
于 2012-10-25T10:12:38.350 に答える
0

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");
}
于 2018-07-31T17:37:57.503 に答える
-2

変数を動的に変更するには、次のようにします。

String value = System.getenv("MY_HOME");
Properties prop = new Properties("log4j.properties"); 
prop.put("MY_HOME", value); // overwrite with value from environment
PropertyConfigurator.configure(prop);
于 2012-10-25T10:18:51.830 に答える
-3

UNIXを使用しているので、このようなパスを使用できます。

  /home/Production/modulename/logs/message.log

パスは/で始まる必要があります

于 2012-10-25T10:05:13.547 に答える