如何解决使用外部服务或代理来记录我的Java Web应用程序完成的所有文件访问和处理?
我致力于维护Enterprise Java Web应用程序。它极其可配置,具有成千上万的配置文件和xml定义。
背景
有时,某些配置文件已损坏,导致阻塞异常。文件名和文件路径通常不会记录在我们当前的框架中。由于存在数千个配置文件,因此很难在客户端识别哪个配置文件已损坏。因此,我们要记录应用程序完成的所有文件访问和处理。
已完成的操作 -我们使用log4j创建了两个调试日志和一个错误日志。 -我们将每个文件访问记录在配置处理或xml处理类中。 -我们记录 try 捕获可能发生的任何异常。 这需要手动重构数百个类中的代码。
public static final Logger log = Logger.getLogger(ThisLoggerClass.class);
public static void logConfigFileException(Exception ex,String fileName,String fullPathToFile) {
log.error(" file: [ " + fileName + " ] was either corrupted or not present at [ " + fullPathToFile + " ] causing error: " + ex.getMessage(),ex);
}
public static void logFileAccessForRead(String fileName,String fullPathToFile) {
log.debug("file: [ " + fileName + " ] was read from the location: [ " + fullPathToFile + " ] ");
}
public static void logFileAccessForWrite(String fileName,String fullPathToFile) {
log.debug("file: [ " + fileName + " ] was written to the location: [ " + fullPathToFile + " ] ");
}
}
实际问题
可以看出,它非常需要手动重构成千上万个访问的类,然后以不同的方式处理成千上万个文件。
所需解决方案
通过外部代理或应用记录带有时间戳的由我们的应用编写或读取的所有文件。
是否有任何外部代理或应用程序可以记录服务器上某个进程或应用程序完成的所有文件访问活动?
解决方法
您可以做一些事情。哪个最好取决于您的应用程序。
- 找出文件损坏的原因并解决该问题。
- 在应用程序启动时具有配置检查阶段,该阶段检查所有配置文件以检查它们是否为有效的XML。这样可以避免在现有代码读取配置的地方捕获异常。
- 包装您使用的所有java.io类,以便它们在不更改现有代码(除了更改导入语句)的情况下记录访问权限
我敢肯定还有其他方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。