Seam3焊料记录

时间:2011-06-27 12:15:33

标签: logging seam3

我刚刚开始使用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]
  • 除了注入普通记录器外,Typed记录器看起来也很漂亮。文档声称您应该使用不存在的@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");

2 个答案:

答案 0 :(得分:1)

确保您正在进行的注释是Solder Annotations,而不是通用注释。

答案 1 :(得分:0)

您的问题看起来像是Seam Solder中包含的类的依赖性问题。你确定依赖是否满足?

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