日志文件出现大量FileNotFoundException,寻求技术解决帮助
我经常碰到WebSphere里这个恼人的警告——虽然它不影响应用功能,但日志刷得满屏都是确实很烦人。咱们一步步来搞定它:
先搞清楚问题根源
这个SRVE8109W警告是WebSphere的FilterInstanceWrapper在执行AnyChart Resources过滤器时,找不到某个指定的资源文件导致的。大概率是资源路径配置错了,或者应用包里漏了AnyChart的相关资源。
具体解决步骤
1. 检查过滤器的配置参数
先去你的应用web.xml(或者用注解配置的话找对应的过滤器类)里,找到AnyChart Resources过滤器的定义,看看它的初始化参数里有没有指定资源路径。比如类似这样的配置:
<filter> <filter-name>AnyChart Resources</filter-name> <filter-class>com.anychart.web.filter.AnyChartResourceFilter</filter-class> <init-param> <param-name>resourceBasePath</param-name> <param-value>/resources/anychart/</param-value> </init-param> </filter>
仔细核对这个路径是否正确,注意大小写——WebSphere在Linux/Unix环境下对路径大小写是敏感的,别因为拼写小错误导致找不到文件。
2. 确认应用包中的资源是否完整
把你的WAR/EAR包解压开,检查刚才配置的路径下,有没有AnyChart需要的所有资源文件(比如JS脚本、CSS样式、字体文件这些)。如果发现缺失,重新打包时把这些资源补进去再重新部署。
3. 临时方案:调低日志级别抑制警告
如果暂时找不到根本原因,又想先让日志清净下来,可以调整WebSphere的日志级别:
- 登录WebSphere管理控制台,进入日志和跟踪 → 目标服务器 → 更改日志详细信息级别
- 找到
com.ibm.ws.webcontainer.filter这个日志器,把它的级别从WARNING改成ERROR(或者更高的级别) - 保存配置后重启服务器,这样这个
SRVE8109W警告就不会再出现在日志里了
4. 排查自定义过滤器代码(如果是自研的)
如果这个AnyChart Resources过滤器是你们自己开发的,那得检查它的doFilter方法里的文件加载逻辑。比如是不是用了new File()这种方式读取文件?Web应用里读取WEB-INF下的资源,应该用ServletContext.getResourceAsStream()才对,避免因为相对路径错误导致找不到文件。
要是以上方法都没解决问题,可以把过滤器的完整配置或者应用的部署环境信息贴出来,我再帮你进一步排查~
内容的提问来源于stack exchange,提问作者HS447

