0

我刚开始使用 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 loggers 看起来也很漂亮。文档声称您应该使用@LogMessage不存在的注释。我的猜测是它被重命名为,@Log因为这似乎有效。要启用所有常规方法(信息、警告、错误等),让日志接口扩展BasicLogger似乎很容易,但是该接口似乎没有正确注释,因此在调用这些方法时实际上没有记录任何内容(调用处理程序检查@Message注释并没有找到)。我做错了什么还是框架真的没有完成?在几个月内开发一个进入 prod 的系统时,我是否应该坚持使用普通的 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");
4

2 回答 2

1

确保您所做的注释是焊接注释,而不是通用注释。

于 2012-06-15T22:41:19.473 回答
0

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

<dependency>
  <groupId>org.jboss.seam.solder</groupId>
  <artifactId>seam-solder</artifactId>
  <version>${version.seam}</version>
</dependency>
于 2011-09-20T13:02:25.873 回答