使用Jakarta Log Taglib

博客涉及Log4j、logging、debugging等信息技术相关内容,还关联到jsp、login及apache。Log4j在日志记录方面有重要作用,这些技术在开发调试等场景中较为关键。
作者: 点击: 1
日期:2004-11-04 11:24:26

使用Jakarta Log Taglib

 

作者: BUILDER.COM

 

 

 

开发人员需要创建跟踪文件以帮助他们找到错误,或根据用户的活动来提交报告。因此记录日志对于Java的应用就显得很重要了。

 

 

现在已经有相当多的日志框架支持Java,包括来自于IBMJDK1.4,和Apache的。目前使用的是ApacheLog4J框架。它最初是由Ceki Gulcu写出来的,而且被移植到PythonC++中。尽管Log4J非常有用,在JSP页内部中使用还是有一点困难的。但是Jakarta Log Taglib可以帮助我们。

 

Jakarta Log Taglib似的JSP开发人员可以轻松的和Logging framework交互,而不用担心它是如何复杂的工作的。

 

首先,必须要指定taglib。操作方法如下:

 

<%@ taglib uri="http://jakarta.apache.org/

taglibs/log-1.0" prefix="log" %>

在这个例子中,我们指定了taglib,并输入了一个前缀“log”。

 

一旦这些建立了之后,日志信息将会以如下五种标记输出:debug,warninfo error,或fatal。它们是Log4J的五种默认的错误信息的输出。

 

日志本身可能以特征的形式或内容的形式来输出。而且,可能设置了一个范围。因此有可能出现在“login”目录中只有调试信息的情况。

 

这里有一些例子:

 

<%-- debug the value 'i' --%>

 <log:debug>A simple piece of debugging

<%=i%>.</log:debug>

 <%-- push some debug out as an attribute --%>

 <log:debug message="Reached point number 1." />

 <%-- Output the username of the logged in user --%>

 <log:debug category="login">User logged

in[<%=username%>]

</log:debug>

Logging taglib还提供了输出某段jsp程序到日志文件的功能。这里有一段简单的代码用来输出这四段程序的日志:

 

<log:dump scope="page"/>

 <log:dump scope="request"/>

 <log:dump scope="session"/>

 <log:dump scope="application"/>

 

F:\apache-tomcat-10.1.40-windows-x64\apache-tomcat-10.1.40\bin\catalina.bat run 2025-06-17 06:17:33,028 Artifact WebKS:war: Waiting for server connection to start artifact deployment... Using CATALINA_BASE: "C:\Users\����\AppData\Local\JetBrains\IntelliJIdea2024.2\tomcat\4b98b26d-340d-4d2f-adbd-1d3e8a3e73ff" Using CATALINA_HOME: "F:\apache-tomcat-10.1.40-windows-x64\apache-tomcat-10.1.40" Using CATALINA_TMPDIR: "C:\Users\����\AppData\Local\JetBrains\IntelliJIdea2024.2\tomcat\4b98b26d-340d-4d2f-adbd-1d3e8a3e73ff\temp" Using JRE_HOME: "D:\Java\jdk-16.0.2" Using CLASSPATH: "F:\apache-tomcat-10.1.40-windows-x64\apache-tomcat-10.1.40\bin\bootstrap.jar;F:\apache-tomcat-10.1.40-windows-x64\apache-tomcat-10.1.40\bin\tomcat-juli.jar" Using CATALINA_OPTS: "" 17-Jun-2025 18:17:33.753 信息 main org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/10.1.40 17-Jun-2025 18:17:33.755 信息 main org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Apr 1 2025 17:20:53 UTC 17-Jun-2025 18:17:33.756 信息 main org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 10.1.40.0 17-Jun-2025 18:17:33.756 信息 main org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 10 17-Jun-2025 18:17:33.756 信息 main org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0 17-Jun-2025 18:17:33.756 信息 main org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64 17-Jun-2025 18:17:33.756 信息 main org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: D:\Java\jdk-16.0.2 17-Jun-2025 18:17:33.756 信息 main org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 16.0.2+7-67 17-Jun-2025 18:17:33.757 信息 main org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation 17-Jun-2025 18:17:33.757 信息 main org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\乐乐\AppData\Local\JetBrains\IntelliJIdea2024.2\tomcat\4b98b26d-340d-4d2f-adbd-1d3e8a3e73ff 17-Jun-2025 18:17:33.757 信息 main org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: F:\apache-tomcat-10.1.40-windows-x64\apache-tomcat-10.1.40 17-Jun-2025 18:17:33.758 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=C:\Users\乐乐\AppData\Local\JetBrains\IntelliJIdea2024.2\tomcat\4b98b26d-340d-4d2f-adbd-1d3e8a3e73ff\conf\logging.properties 17-Jun-2025 18:17:33.759 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 17-Jun-2025 18:17:33.759 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote= 17-Jun-2025 18:17:33.759 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.port=1099 17-Jun-2025 18:17:33.759 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.ssl=false 17-Jun-2025 18:17:33.759 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.password.file=C:\Users\乐乐\AppData\Local\JetBrains\IntelliJIdea2024.2\tomcat\4b98b26d-340d-4d2f-adbd-1d3e8a3e73ff\jmxremote.password 17-Jun-2025 18:17:33.759 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.access.file=C:\Users\乐乐\AppData\Local\JetBrains\IntelliJIdea2024.2\tomcat\4b98b26d-340d-4d2f-adbd-1d3e8a3e73ff\jmxremote.access 17-Jun-2025 18:17:33.759 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.rmi.server.hostname=127.0.0.1 17-Jun-2025 18:17:33.759 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djdk.tls.ephemeralDHKeySize=2048 17-Jun-2025 18:17:33.760 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 17-Jun-2025 18:17:33.760 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dsun.io.useCanonCaches=false 17-Jun-2025 18:17:33.760 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED 17-Jun-2025 18:17:33.760 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED 17-Jun-2025 18:17:33.760 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED 17-Jun-2025 18:17:33.761 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED 17-Jun-2025 18:17:33.761 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED 17-Jun-2025 18:17:33.761 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 17-Jun-2025 18:17:33.761 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=C:\Users\乐乐\AppData\Local\JetBrains\IntelliJIdea2024.2\tomcat\4b98b26d-340d-4d2f-adbd-1d3e8a3e73ff 17-Jun-2025 18:17:33.761 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=F:\apache-tomcat-10.1.40-windows-x64\apache-tomcat-10.1.40 17-Jun-2025 18:17:33.761 信息 main org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=C:\Users\乐乐\AppData\Local\JetBrains\IntelliJIdea2024.2\tomcat\4b98b26d-340d-4d2f-adbd-1d3e8a3e73ff\temp 17-Jun-2025 18:17:33.763 信息 main org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本1.7.4加载了基于APR的Apache Tomcat本机库2.0.8。 17-Jun-2025 18:17:33.769 信息 main org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 OpenSSL 3.0.14 4 Jun 2024 17-Jun-2025 18:17:33.953 信息 main org.apache.coyote.AbstractProtocol.init 初始化协议处理器 "http-nio-8080" 17-Jun-2025 18:17:33.975 信息 main org.apache.catalina.startup.Catalina.load 服务器在437毫秒内初始化 17-Jun-2025 18:17:34.035 信息 main org.apache.catalina.core.StandardService.startInternal 正在启动服务Catalina 17-Jun-2025 18:17:34.035 信息 main org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:Apache Tomcat/10.1.40 17-Jun-2025 18:17:34.054 信息 main org.apache.coyote.AbstractProtocol.start 开始协议处理句柄"http-nio-8080" 17-Jun-2025 18:17:34.098 信息 main org.apache.catalina.startup.Catalina.start 122毫秒后服务器启动 Connected to server 2025-06-17 06:17:34,106 Artifact WebKS:war: Artifact is being deployed, please wait... 17-Jun-2025 18:17:35.895 严重 RMI TCP Connection(2)-127.0.0.1 org.apache.catalina.core.StandardContext.startInternal ServletContainerInitializer处理期间出错 jakarta.servlet.ServletException: java.io.FileNotFoundException: JAR entry META-INF/taglib.tld not found in F:\apache-tomcat-10.1.40-windows-x64\apache-tomcat-10.1.40\webapps\WebKS_war\WEB-INF\lib\jakarta.servlet.jsp.jstl-3.0.1.jar at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:83) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4464) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:654) at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1787) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:263) at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:809) at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:418) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:372) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:263) at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:809) at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at java.management/com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468) at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466) at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307) at java.base/java.security.AccessController.doPrivileged(AccessController.java:691) at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1406) at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:827) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) at java.base/java.security.AccessController.doPrivileged(AccessController.java:691) at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at java.base/java.lang.Thread.run(Thread.java:831) Caused by: java.io.FileNotFoundException: JAR entry META-INF/taglib.tld not found in F:\apache-tomcat-10.1.40-windows-x64\apache-tomcat-10.1.40\webapps\WebKS_war\WEB-INF\lib\jakarta.servlet.jsp.jstl-3.0.1.jar at java.base/sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:147) at java.base/sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:155) at java.base/java.net.URL.openStream(URL.java:1192) at org.apache.tomcat.util.descriptor.tld.TldResourcePath.openStream(TldResourcePath.java:127) at org.apache.tomcat.util.descriptor.tld.TldParser.parse(TldParser.java:62) at org.apache.jasper.servlet.TldScanner.scanJspConfig(TldScanner.java:187) at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:96) at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:81) ... 45 more 17-Jun-2025 18:17:35.941 严重 RMI TCP Connection(2)-127.0.0.1 org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context/WebKS_war启动失败 2025-06-17 06:17:35,963 Artifact WebKS:war: Error during artifact deployment. See server log for details. 17-Jun-2025 18:17:40.956 信息 mysql-cj-abandoned-connection-cleanup org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问:此Web应用程序实例已停止。无法加载。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。 java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。 at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1400) at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:987) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at java.base/java.lang.Thread.run(Thread.java:831) 依然有错您帮我分析一下
最新发布
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值