私は何かが足りないはずですが、私はこれを数日間見てきましたが、なぜ地球上でlog4jよりもlog4j2を使用するのですか(パフォーマンス以外)?
これまで見てきたことから、log4j2は設定がより簡単であると宣伝されていますが、実際には非常に複雑です(3日たっても、ホームディレクトリにログを書き込むことができません)。自動構成は単に私にとっては機能しません(または少なくとも機能させることができません)。構成ファイル自体の構造はかなり複雑であり、診断時に役立つように実行時に追加するのははるかに難しいようです。
では、パフォーマンス以外に、元のlog4jよりもlog4j2を使用する理由はありますか?
Log4j 1.xからLog4j 2にアップグレードする理由
更新:2015年8月以降、Log4j 1.xは正式にサポート終了となり、Log4j 2にアップグレードすることをお勧めします。更新2:Log4j 1.2はJava 9で壊れています。
注意してください
log4j-1.2-api
アダプターによってサポートされますが、Log4j 1.2内部に依存するカスタマイズは機能しない可能性があります。アップグレード時のヒント
log4j2を使い始めるときに人々が抱えている一般的な問題:
log4j.configurationFile
システムプロパティでパスを指定します<Configuration status="trace">
は、設定ファイルの最初で使用します問題が上記のいずれでもない場合は、構成を表示し、発生している問題の詳細を提供してください。(自動構成で何が期待できるかわからない。これは、log4j2が構成ファイルを見つけられない場合にERRORイベントをコンソールに記録する非常に基本的な機能です。これで十分になることはめったにありません。)
ホームディレクトリに書き込むには、システムプロパティlookupを 使用できます${sys:PROPERTYNAME}
。以下は、設定例です。
<Configuration status="trace">
<Properties>
<Property name="logfile">${sys:user.home}/log${date:yyyyMMdd}.log</Property>
</Properties>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
<File name="FILE" fileName="${sys:logfile}">
<PatternLayout>
<pattern>%d %p [%t] %c{1.} %m%n</pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="STDOUT" level="ERROR" />
<AppenderRef ref="FILE" />
</Root>
</Loggers>
</Configuration>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加