ログメッセージをWebサービスに書き込むためにlog4jでAsyncAppenderを使用するにはどうすればいいですか? AsyncAppenderを拡張する独自のAppenderを作成するか、AsyncAppenderにカスタムアペンダーを追加するだけですか? 2番目の選択肢が正しい場合、AsyncAppenderオブジェクトはどこに置くべきですか?例はありますか?log4jでAsyncAppenderを使用するには?
答えて
私自身の質問に答える。
log4j設定ファイル(通常はlog4j.xmlまたはlog4j.properties)では、実際のアペンダを参照するAsyncAppenderを定義する必要があります(これは私の場合のように独自の定義されたクラスかもしれません)。
私はAppenderSkeletonを拡張し、3つの抽象メソッドを実装するWebServiceAppenderクラスを作成しました。主な方法は、Webサービスに接続してすべての情報をWebサービスに送信する「追加」です。それでおしまい。
実際のアペンダーを参照するlog4j設定ファイルにAsyncAppenderを追加します。デモ用 :のlog4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss aa} %t [%l] %m%n"/>
</layout>
</appender>
<appender name="async" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="500"/>
<appender-ref ref="console"/>
</appender>
<root>
<priority value="all"></priority>
<appender-ref ref="async"/>
</root>
</log4j:configuration>
でアペンダをコンソールにasyncappenderを追加する我々はlog4j.AsyncAppenderを使用していたが、log4j.propertyファイルで他のアペンダをアタッチする任意のsetterメソッドを見つけることができませんでした。そこで、log4j.AsyncAppenderクラスを拡張し、セッターを追加して他のアペンダーを追加しました。これにより、メインプログラムのスレッドはlog4jのログ操作に依存しなくなりました。以下の詳細。
のlog4jエントリ:
は、log4jのファイルアペンダとロガー 'com.noPath' を定義する 'fileAppender'。ロガーパスが重要ではないことに注意してくださいので、名「com.noPath」
log4j.logger.com.noPath=DEBUG,fileAppender
log4j.appender.fileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.fileAppender.File=c:/test.log
はに、ビジネスニーズが、「com.business」、前のステップ、「fileAppender」のファイルアペンダをアタッチロガーを定義します。 log4jのAsyncAppender
log4j.logger.com.business=DEBUG,asyncLog
log4j.appender.asyncLog=com.log.AsyncAppenderHelper
log4j.appender.asyncLog.appenderFromLogger=com.noPath
log4j.AsyncAppenderを拡張するJavaクラスcom.log.AsyncAppenderHelperを拡張するカスタムクラスcom.log.AsyncAppenderHelperてlog4jのAsyncAppenderは、クラスパスにそれが利用可能です。
package com.log
import java.util.Enumeration;
import org.apache.log4j.Appender;
import org.apache.log4j.AsyncAppender;
import org.apache.log4j.Logger;
/*
* This class helps configure to AsyncAppender from log4j as part of log4j.properties
* You can inject other appenders to AsyncAppender using the AsyncAppenderHelper
* This would free up the main program thread to be independent of log4j's logging operation
* @Author http://www.linkedin.com/in/jobypgeorge
*/
public class AsyncAppenderHelper extends AsyncAppender{
public AsyncAppenderHelper(){
super();
}
public void setAppenderFromLogger(String name){
Logger l = Logger.getLogger(name);
Enumeration<Appender> e = l.getAllAppenders();
while(e.hasMoreElements()){
Appender a = e.nextElement();
this.addAppender(a);
System.out.println("The newAppender "+a.getName() +" attach status "+this.isAttached(a));
}
}
}
- 1. log4j AsyncAppenderを使用しているときに重複するメッセージ
- 2. チェーンソーをLog4jに使用するには?
- 3. 継承クラスでlog4jを使用する
- 4. Swingアプリケーションでlog4jを使用する
- 5. JBoss 7.1でlog4jを使用
- 6. Log4jをマルチスレッドプロジェクトで使用
- 7. 複数のクラスでlog4jを使用するには?
- 8. jdbcadapterでのlog4jの使用
- 9. log4j 1.xから2.xへの移行時に 'AsyncAppender ASYNCにアペンダーが使用できません'というエラーが発生しました。
- 10. logger.debug()を使用する前にLog4j isDebugEnabled()が必要ですか?
- 11. slf4jとlog4jを使用したjettyRunWarタスクはエラーになります。ログにlog4jを使用するにはどうすればよいですか?
- 12. ColdFusion MXでApache LoggerまたはLog4Jを使用する方法
- 13. weblogicの下で耳にlog4jを使用する12c
- 14. Sparkでエグゼキュータとドライバにカスタムlog4jプロパティを使用する方法
- 15. WebLookupをlog4j-webで使うには?
- 16. .propertiesファイルとmavenを使用してLog4jでデバッグを有効にするには?
- 17. LogbackフレームワークでのAsyncAppenderの設定とパフォーマンス
- 18. FileNamePattern、log4jのRollingFileAppenderの使用
- 19. Androidライブラリをlog4jを使用せずに使用するにはどうすればいいですか?
- 20. Log4j APIの使用方法は?
- 21. は、私は春にセットアップのlog4jにこのプロパティファイルを使用していますlog4jの
- 22. log4jでhtmllayoutを変更するには
- 23. weblogicでのlog4jログインの使用9/10
- 24. java/java EEアプリケーションでlog4jを使用してコンポーネントをロギングする
- 25. SyslogAppenderを使用してlog4jにカスタムフィールドを追加する
- 26. log4jを使用してログファイルをログファイルに追加する方法
- 27. log4jを使用するようにjettyを設定する方法は?
- 28. JBoss 7.1.1でアプリケーションのLog4J設定を使用する
- 29. axis2でlog4jを使用する際の問題
- 30. log4j変換パターンでJavaオブジェクトを使用することはできますか?
他のユーザーのためのサンプルコードを入力してください。ありがとう – philipp
あなたはコードまたは数行を提供してくださいできますか? –