Tomcat 打印日志让你事半功倍

本文记录了一次Tomcat启动过程中遇到的非法访问异常问题解决过程,详细分析了异常堆栈,最终定位为程序代码中参数名重复导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    今天启动服务器的时候遇到问题,但是显示的异常指向和提示却并没有什么软用,百度也找不到类似信息,只能打印 tomcat 日志信息从头到尾看了,最后果然发现问题的症结,因为 eclipse console 虽然也打印 tomcat 日志,但是由于启动的时候太快,很多信息被覆盖了,所以得不到有用信息,而输出日志文件很好的解决了这一问题。

步骤1:

步骤2:

 

接下来说说我的异常:

九月 15, 2017 10:51:28 上午 org.apache.catalina.loader.WebappClassLoaderBase loadClass

INFO: Illegal access: this web application instance has been stopped already.  Could not load net.rubyeye.xmemcached.exception.MemcachedDecodeException.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.

java.lang.IllegalStateException

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1777)

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)

at net.rubyeye.xmemcached.impl.MemcachedHandler.checkHeartBeat(MemcachedHandler.java:202)

at net.rubyeye.xmemcached.impl.MemcachedHandler.onSessionIdle(MemcachedHandler.java:182)

at com.google.code.yanf4j.core.impl.AbstractSession.onIdle(AbstractSession.java:194)

at com.google.code.yanf4j.nio.impl.AbstractNioSession.onEvent(AbstractNioSession.java:350)

at com.google.code.yanf4j.nio.impl.Reactor.checkIdle(Reactor.java:496)

at com.google.code.yanf4j.nio.impl.Reactor.checkExpiredIdle(Reactor.java:487)

at com.google.code.yanf4j.nio.impl.Reactor.checkSessionTimeout(Reactor.java:393)

at com.google.code.yanf4j.nio.impl.Reactor.run(Reactor.java:160)

 

[MMD] 10:51:28,859 ERROR MemcachedHandler:onExceptionCaught:137 - XMemcached network layout exception

 java.lang.NoClassDefFoundError: net/rubyeye/xmemcached/exception/MemcachedDecodeException

at net.rubyeye.xmemcached.impl.MemcachedHandler.checkHeartBeat(MemcachedHandler.java:202)

at net.rubyeye.xmemcached.impl.MemcachedHandler.onSessionIdle(MemcachedHandler.java:182)

at com.google.code.yanf4j.core.impl.AbstractSession.onIdle(AbstractSession.java:194)

at com.google.code.yanf4j.nio.impl.AbstractNioSession.onEvent(AbstractNioSession.java:350)

at com.google.code.yanf4j.nio.impl.Reactor.checkIdle(Reactor.java:496)

at com.google.code.yanf4j.nio.impl.Reactor.checkExpiredIdle(Reactor.java:487)

at com.google.code.yanf4j.nio.impl.Reactor.checkSessionTimeout(Reactor.java:393)

at com.google.code.yanf4j.nio.impl.Reactor.run(Reactor.java:160)

Caused by: java.lang.ClassNotFoundException: net.rubyeye.xmemcached.exception.MemcachedDecodeException

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)

... 8 more

 

    这个问题挺蛋疼的,我以为是memcached的问题,一直在搞配置文件,后来一看Tomcat日志才发现是我自己程序代码的问题:

tomcat 日志:

 [MMD] 11:23:55,999 ERROR RoseFilter:initFilterBean:295 - [Rose-1.0.1-20100604@Spring-3.1.3.RELEASE]:params with same name: 'upfile'
 java.lang.IllegalArgumentException: params with same name: 'upfile'
    at net.paoding.rose.web.paramresolver.ParameterNameDiscovererImpl.getParameterNames(ParameterNameDiscovererImpl.java:107)
    at net.paoding.rose.web.paramresolver.MethodParameterResolver.<init>(MethodParameterResolver.java:56)
    at net.paoding.rose.web.impl.thread.ActionEngine.compileParamResolvers(ActionEngine.java:120)
    at net.paoding.rose.web.impl.thread.ActionEngine.<init>(ActionEngine.java:89)
    at net.paoding.rose.web.impl.mapping.TreeBuilder.addAction(TreeBuilder.java:129)
    at net.paoding.rose.web.impl.mapping.TreeBuilder.addController(TreeBuilder.java:117)
    at net.paoding.rose.web.impl.mapping.TreeBuilder.addModule(TreeBuilder.java:84)
    at net.paoding.rose.web.impl.mapping.TreeBuilder.addRoot(TreeBuilder.java:58)
    at net.paoding.rose.web.impl.mapping.TreeBuilder.create(TreeBuilder.java:53)
    at net.paoding.rose.RoseFilter.prepareMappingTree(RoseFilter.java:439)
    at net.paoding.rose.RoseFilter.initFilterBean(RoseFilter.java:279)
    at org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean.java:194)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4958)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5652)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

上面服务器启动的就不截图了,看这个"params with same name: 'upfile'",终于解决了。

转载于:https://my.oschina.net/NamiZone/blog/1537827

这个错误是由于无法连接到本地主机的10248端口导致的。这个端口通常是kubelet进程监听的端口,用于健康检查。出现这个错误可能是由于kubelet进程没有正确启动或者配置错误导致的。 解决这个问题的方法是检查kubelet进程的状态和配置。你可以按照以下步骤进行操作: 1. 检查kubelet进程是否正在运行。你可以使用以下命令检查kubelet进程的状态: ```shell systemctl status kubelet ``` 如果kubelet进程没有运行,你可以使用以下命令启动它: ```shell systemctl start kubelet ``` 2. 检查kubelet的配置文件。你可以使用以下命令查看kubelet的配置文件路径: ```shell kubelet --kubeconfig /etc/kubernetes/kubelet.conf --config /var/lib/kubelet/config.yaml --bootstrap-kubeconfig /etc/kubernetes/bootstrap-kubelet.conf config view ``` 确保配置文件中的端口号和地址正确,并且与你的环境相匹配。 3. 检查网络连接。你可以使用以下命令检查是否可以连接到localhost的10248端口: ```shell curl -sSL http://localhost:10248/healthz ``` 如果无法连接,请确保端口没有被防火墙或其他网络配置阻止。 4. 检查docker的配置。有时候,kubelet进程依赖于docker进程。你可以按照以下步骤检查docker的配置: - 创建/etc/docker目录: ```shell sudo mkdir /etc/docker ``` - 编辑/etc/docker/daemon.json文件,并添加以下内容: ```json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "registry-mirrors": ["https://tdhp06eh.mirror.aliyuncs.com"] } ``` - 重启docker进程: ```shell systemctl restart docker ``` 请注意,以上步骤是一种常见的解决方法,但具体解决方法可能因环境而异。如果以上步骤无法解决问题,请提供更多的错误信息和环境配置,以便我们能够更好地帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值