我刚开始使用 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");