登录中

登录中涉及在应用程序运行时自动记录进度。Tapestry广泛使用SLF4J系列记录有关页面和组件类的创建和操作的详细信息。

相关文章

日志记录使用的默认配置日志4J作为日志工具包这个可以更改

向记录器分类

页面或组件的记录器名称与完全限定的类名匹配。您可以在log4j.properties中进行配置:

log4j.属性
log4j.category.org.apache.tapestry5.integration.app1.pages。圣诞快乐=跟踪

注入记录器

您可以标记类型为的字段记录器使用@Inject注释。将为您的页面或组件注入适当的Logger。

我的网页.java
公共类MyPage{@注入私人记录器;. . .在SuccessFromForm()上无效{logger.info(“更改保存成功”);}

@日志注释

您可以使用标记任何组件方法@日志注释。方法入口、出口(以及任何抛出的异常)将在DEBUG级别记录,同时记录参数值和方法的返回值。这对于调试非常方便,尤其是当放置在事件处理程序方法上时。

组件转换调试

Tapestry在类加载时对它们执行转换,有时您希望了解它所做的工作。Tapestry使用一个二级记录器来记录(在调试级别)转换类的结果,该记录器由前缀为“Tapestry.transformer”的类名组成。

示例:

[DEBUG]索引//类版本49.0(49)//访问标志0x11公共最终类org/apache/tapestry5/integration/app1/pages/Index$Invocation_containingPageDidLoad_123fd9264de3fa20 extends org/apacher/tapestry 5/internal/plastic/AbstractMethodInvocation实现org/apache/tapestory5/plastic/MethodInvocation{//访问标志0x1public<init>(Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Lorg/apache/tappestry5/internal/plastic/MethodInvocationBundle;)VALOAD(高度)0ALOAD 1号机组ALOAD 2号机组ALOAD 3号机组INVOKESPECIAL org/apache/tapestry5/internal/plastic/AbstractMethodInvocation公司<init>(Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Lorg/apache/tappestry5/internal/plastic/MethodInvocationBundle;)V返回最大堆栈=0MAXLOCALS=0//访问标志0x1公共setReturnValue(Ljava/lang/Object;)Lorg/apache/tapestry5/plastic/MethodInvocation;新java/lang/IllegalArgumentExceptionDUP(DUP)LDC“类org.apache.tapestry5.integration.app1.pages.Index的方法public void containingPageDidLoad()为void,不允许设置返回值。”. . .

本质上,这个输出是对Tapestry为组件转换或创建的字节码的分解。这有帮助吗?可能只有在您开发自己的代码并将其集成到组件类转换链中时;例如,为了支持您自己的字段和方法注释,即使这样,Tapestry 5.3中的注释也不如早期版本的Tapestry中的注释多(因为引入了塑料库)。

组件事件调试

Tapestry还可以调试组件事件逻辑。组件的记录器带有“tapestry.events.”前缀,用于调试级别。调试输出标识事件名称和事件源,并标识调用的任何方法。

请注意,组件未处理的事件将冒泡到组件的容器中;将使用与容器关联的记录器进一步记录同一事件。包含初始组件的页面是日志记录的最后一步。

示例:

[DEBUG]ActionLink调度事件:ComponentEvent[来自(self)的操作][DEBUG]ActionDemo调度事件:ComponentEvent[来自actionlink的操作][DEBUG]ActionDemo调用:org.apache.tapestry5.integration.app1.pages.nested。ActionDemo.onAction(java.lang.Long)(位于ActionDemon.java:28)[DEBUG]ActionDemo调度事件:ComponentEvent[从(self)钝化][DEBUG]ActionDemo调用:org.apache.tapestry5.integration.app1.pages.nested。ActionDemo.onPassivate()(位于ActionDemo.java:38)

渲染队列调试

有时,获取渲染页面所涉及的所有步骤的调试输出很有用。在Tapestry中,渲染涉及通过渲染队列传递的一系列渲染命令(大多数命令将通过将其他命令排队来操作)。渲染命令可以表示组件模板或某些模板文本中的元素或属性,也可以表示渲染组件时的一个渲染阶段。

记录器是页面的记录器,其前缀为“tapestry.render”。

当您获得关于不平衡的打开和关闭标记的呈现异常时,此调试非常有用。

大多数日志记录都是在跟踪级别上进行的,除了末尾的一个调试级别条目,该条目标识了命令的数量和经过的时间。

. . .[TRACE]操作演示执行:文本[Apache Software Foundation][TRACE]ActionDemo执行:结束[TRACE]操作演示执行:文本[][TRACE]ActionDemo执行:结束[TRACE]操作演示执行:文本[][TRACE]ActionDemo正在执行:开始[http://www.w3.org/1999/xhtmldiv(分割)][TRACE]ActionDemo正在执行:org.apache.tapestry5.internal.services。页面元素工厂实施$1@587e3a30[TRACE]ActionDemo执行:结束[TRACE]操作演示执行:文本[][TRACE]ActionDemo执行:结束[TRACE]ActionDemo执行:结束[TRACE]ActionDemo执行:结束[TRACE]ActionDemo正在执行:AfterRenderTemplate[nested/ActionDemo:border][TRACE]ActionDemo正在执行:AfterRender[nested/ActionDemo:border][TRACE]ActionDemo正在执行:CleanupRender[nested/ActionDemo:border][TRACE]操作演示执行:org.apache.tapestry5.internal.structure。组件页面元素实现$1@7efc0795[TRACE]操作演示正在执行:DTD[name=html;publicId=-//W3C//DTD XHTML 1.0 Strict//EN;systemId=http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.DTD][TRACE]ActionDemo正在执行:AfterRenderTemplate[nested/ActionDemo][TRACE]ActionDemo正在执行:AfterRender[nested/ActionDemo][TRACE]ActionDemo正在执行:CleanupRender[nested/ActionDemo][TRACE]操作演示执行:org.apache.tapestry5.internal.structure。组件页面元素实现$1@7efc0795[DEBUG]ActionDemo在0.025秒内执行了276个渲染命令(最大队列深度:141)