ログメッセージを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に使用するには?
- 2. Swingアプリケーションでlog4jを使用する
- 3. 継承クラスでlog4jを使用する
- 4. Log4jをマルチスレッドプロジェクトで使用
- 5. JBoss 7.1でlog4jを使用
- 6. 複数のクラスでlog4jを使用するには?
- 7. jdbcadapterでのlog4jの使用
- 8. logger.debug()を使用する前にLog4j isDebugEnabled()が必要ですか?
- 9. ColdFusion MXでApache LoggerまたはLog4Jを使用する方法
- 10. WebLookupをlog4j-webで使うには?
- 11. FileNamePattern、log4jのRollingFileAppenderの使用
- 12. Log4j APIの使用方法は?
- 13. は、私は春にセットアップのlog4jにこのプロパティファイルを使用していますlog4jの
- 14. weblogicでのlog4jログインの使用9/10
- 15. log4jでhtmllayoutを変更するには
- 16. java/java EEアプリケーションでlog4jを使用してコンポーネントをロギングする
- 17. log4jを使用するようにjettyを設定する方法は?
- 18. axis2でlog4jを使用する際の問題
- 19. JBoss 7.1.1でアプリケーションのLog4J設定を使用する
- 20. jspページ内でlog4jを使用する正しい方法は何ですか
- 21. は、私はlog4jの を使用しています
- 22. Log4jを使用したDatewiseログファイル
- 23. log4jを使用した複数のログファイル
- 24. log4jを使用して、以下のログファイル構造を使用できますか?
- 25. xmlを使用してlog4j 1.2を設定する方法
- 26. LOG4J:カスタムアペンダーを使用してログメッセージを修正する
- 27. log4j 2.0とslf4jとCommons Loggingを併用するには
- 28. Log4Jを使用する同じクラスの別のLogger
- 29. eclipse linkとlog4j:両方を使用する方法
- 30. Log4j SyslogAppenderを使用しているときにPatternLayoutを定義するベストプラクティス
他のユーザーのためのサンプルコードを入力してください。ありがとう – philipp
あなたはコードまたは数行を提供してくださいできますか? –