Java Tapestry 5,登录非页面类

Java Tapestry 5,登录非页面类,java,slf4j,tapestry,Java,Slf4j,Tapestry,我在Tomcat上使用了MarkW.Shead的10分钟演示(链接可以从中看到),效果很好。与源代码的直接链接是 我想把一些日志记录到不是页面类的类中。例如,.services.AppModule类 在Tapestry文档中,有一个页面类示例,如下所示: import org.apache.tapestry5.ioc.annotations.Inject; public class MyPage { @Inject private Logger logger; voi

我在Tomcat上使用了MarkW.Shead的10分钟演示(链接可以从中看到),效果很好。与源代码的直接链接是

我想把一些日志记录到不是页面类的类中。例如,.services.AppModule类

在Tapestry文档中,有一个页面类示例,如下所示:

import org.apache.tapestry5.ioc.annotations.Inject;

public class MyPage
{
    @Inject
    private Logger logger;

    void onSuccessFromForm()
    {
        logger.info("Changes saved successfully");
    }
但是我不能让它在其他类中工作,比如AppModule。 当我尝试使用日志时,我得到一个空指针异常

我也试过:

@Inject
public static Logger logger = LoggerFactory.getLogger(AppModule.class);
这运行,但我没有收到任何消息

有什么想法吗?谢谢

您应该尝试以下方法:

public static Logger logger = LoggerFactory.getLogger(AppModule.class);
由于注入,我不应该初始化记录器,或者您在没有注入的情况下初始化记录器


我认为问题在于记录器没有在spring或其他地方定义,这就是tapestry不能只注入空引用的原因。如果您想注入记录器,而不是创建记录器,您应该了解,为什么tapestry项目不初始化记录器。

@Kohei TAMURA感谢您解决了我的问题。我无法让它为我工作,所以我说“f-it,无论如何发布问题,也许有人会帮助。你能给我们展示更多细节吗?例如,你导入spring或tapestry的是什么注入?@LakiGeri我使用tapestry注入。我在问题中添加了源代码的链接(而不是链接的链接)。除了这个问题之外,我没有对这个代码做任何修改。我喜欢记录器中的“tapestry项目”“好主意。你能在你的答案中加入一些代码或伪代码吗?谢谢第一个问题,你制作了log4j属性文件了吗?老实说,我不知道是什么导致了这个问题。。我从来没有遇到过这样的问题,我只是给你一个建议,我会怎么做,这很有效。谢谢但这不是一个问题,这是你应该在Tapestry回答中做的。我相信真正的答案是创建一个日志服务并绑定它等等,这样注入就可以工作了。但我不知道如何做到这一点,而且我在Tapestry网站上也找不到任何有说服力的东西。我同意你的看法,这不是最好的解决方案,但很有效。。还有Tapestry网站。。这是一块……:)我真的不知道为什么他们不能像其他框架那样做一个正常有用的站点。我可以向您推荐T5.3和T5.4的网站