2011-06-27 52 views
0

我使用Seam焊接剛開始和他們的記錄模塊着眼於後的底部有趣http://docs.jboss.org/seam/3/solder/latest/reference/en-US/html/logging.htmlSeam3焊接登錄

見代碼爲我的測試實例。

已經從嘗試使用它上漲的幾個問題:

  • 如何注入正常的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,因爲這似乎工作。爲了能夠使用所有常規方法(信息,警告,錯誤等),讓日誌接口擴展爲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"); 

回答

0

你的問題看起來一點改進包括在縫焊接類的依賴。你確定這個依賴關係是否滿足?

<dependency> 
    <groupId>org.jboss.seam.solder</groupId> 
    <artifactId>seam-solder</artifactId> 
    <version>${version.seam}</version> 
</dependency> 
1

確保您所做的註釋是焊料註釋,而不是通用的註釋。