log4j2ログがVM引数またはコマンドライン引数のいずれかでどこに行くかを指定できるようにしたいと思います。
これは、log4jプロパティのファイルパスを指定する方法を尋ねるすべての質問とは異なります。
-Darbitrary.path="path/to/root/dir"
VM引数を追加して、それを次の場所で参照できると考えましたlog4j2.properties
。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<File name="file" fileName="${arbitrary.path}/application.log">
<PatternLayout
pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</File>
</Appenders>
<Loggers>
<Root level="info" additivity="false">
<AppenderRef ref="file" />
</Root>
</Loggers>
</Configuration>
残念ながら、これは機能しないようです。私が間違っていること、またはこの機能を取得するための代替方法はありますか?
[編集]
@RC。からの提案に基づいて、コマンドライン引数に追加してみました。また--log-dir "/tmp/logMonitor/logs"
、参照をに変更しました${main:--log-dir}
。ただし、この変数は「-log-dir」として解決され、ログファイルを<project_root>/-log-dir/application.log
[/ EDIT]に配置します。
Log4j 2は、構成内のプロパティを置き換えることができます。プロパティ値は、システムプロパティ、環境、スレッドコンテキスト、リソースバンドルなど、さまざまな場所から取得できます。これらはルックアップと呼ばれ、プレフィックスが必要です。たとえば、を使用${sys:arbitrary.path}
してシステムプロパティの値を検索します。Log4j2マニュアルのルックアップセクションを参照してください。
別の方法はarbitrary.path
、構成でプロパティを自分で定義することです。
<Configuration status="warn">
<Properties>
<Property name="arbitrary.path">/some/path/"</Property>
</Properties>
...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加