Seam Solder を使い始めたばかりで、そのロギング モジュールは興味深いものですhttp://docs.jboss.org/seam/3/solder/latest/reference/en-US/html/logging.html
私のテスト例については、投稿の下部にあるコードを参照してください。
それを使用しようとしたことから生じたいくつかの問題:
- 通常のlog4j Loggerオブジェクトを注入するには? ドキュメントには があり
@Inject Logger log
、これは十分に単純に見えますが、デプロイ時に例外をスローします:org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Logger] with qualifiers [@Default] at injection point [[field] @Inject com.company.application.controller.SessionController.log]
- 通常のロガーを注入するだけでなく、型指定されたロガーもかなり気の利いたように見えました。
@LogMessage
ドキュメントでは、存在しない注釈を使用する必要があると主張しています。私の推測では、これは機能し@Log
ているように見えるため、名前が に変更されました。すべての通常のメソッド (info、warning、error など) を使用できるようにするために、ログ インターフェイスを拡張するのBasicLogger
は簡単に思えましたが、このインターフェイスには正しく注釈が付けられていないようで、これらのメソッドが呼び出されたときに実際には何もログに記録されません (呼び出しハンドラーは@Message
アノテーションをチェックしますが、何も見つかりません)。私は何か間違ったことをしていますか、それともフレームワークは本当に未完成ですか? 数か月後に製品になるシステムを開発する場合、通常の log4j を使用する必要がありますか?
インターフェース
@MessageLogger
public interface SessionLogger extends BasicLogger{
@Message("User %s logged in. Redirecting to %s.")
@Log(level= Level.INFO)
void login(String username, String to);
@Message("User %s logged out.")
void logout(String username);
}
使用法
@Inject SessionLogger log
...
log.login("username", "url");