微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用外部服务或代理来记录我的Java Web应用程序完成的所有文件访问和处理?

如何解决使用外部服务或代理来记录我的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 + " ] ");
    }

}

实际问题

可以看出,它非常需要手动重构成千上万个访问的类,然后以不同的方式处理成千上万个文件

  • 开发人员可能会跳过地方。
  • 过多的try-catch使得代码不可读
  • 尝试捕获必须考虑到很多事情,例如:是否应该事先抛出(需要对每个代码流进行彻底测试)

所需解决方

通过外部代理或应用记录带有时间戳的由我们的应用编写或读取的所有文件

是否有任何外部代理或应用程序可以记录服务器上某个进程或应用程序完成的所有文件访问活动?

解决方法

您可以做一些事情。哪个最好取决于您的应用程序。

  1. 找出文件损坏的原因并解决该问题。
  2. 在应用程序启动时具有配置检查阶段,该阶段检查所有配置文件以检查它们是否为有效的XML。这样可以避免在现有代码读取配置的地方捕获异常。
  3. 包装您使用的所有java.io类,以便它们在不更改现有代码(除了更改导入语句)的情况下记录访问权限

我敢肯定还有其他方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?