【问题标题】:Logging Features/Functions Used In an Application应用程序中使用的日志记录特性/功能
【发布时间】:2016-09-15 17:38:27
【问题描述】:

情况如下:我正在努力避免自己和同事浪费时间对用户从未使用过的功能进行编程修复。我开发的应用程序已经存在了 10 年,并且有很多客户可能永远不会使用的功能,即使在某些时候他们曾经使用过。我发现自己在解决一些从未报告过的问题,因为 QA 和客户从未遇到过这些问题。我不想留下有重大问题的代码,但我也不能只删除它,因为该类的某些部分可能在其他地方使用。

我提出了某种日志架构,在用户使用应用程序时跟踪应用程序内的每个函数调用或对象创建。通过这种方式,我们可以向客户询问存储在我们创建的文件夹中某处的日志文件。一旦我们在一定时间(1-2 个月左右)后从所有用户那里获得所有日志,我们就可以分析日志并准确查看正在使用的特性和功能。我相信这些数据对于发现我们的客户如何使用我们的应用程序非常有用。它还可以指出我们的应用程序中从未使用过的功能以及使用最多的功能。

在现有的大型代码库中实现此日志记录功能的良好解决方案/架构和设计模式是什么?或者这只是一个坏主意?

我最初的想法是这样的,但是对于一个非常大的应用程序,这需要一段时间。另外,在每种方法中都有这样的东西看起来并不好,但也许这是唯一的方法?

private void createData()
{
   write.toLog("ClassName.createData");
   //the magic of the createData function
}

【问题讨论】:

  • 如果函数只在闰年的闰日调用呢?删除这可能是一个“坏主意”。
  • 是的,这是一种可能性......也许日志只会帮助确定功能错误的优先级? @ElliottFrisch

标签: java design-patterns architecture


【解决方案1】:

面向方面的编程是实现这一想法的一种方式。

你不是第一个有这种想法的人。分析在网页和网络应用程序中很常见。这可能主要是出于商业考虑。

DevOps 社区也有一些想法。我认为很有可能已经实现了您想要的。这个podcast episode 是关于这个话题的。它不是英文的,但链接页面上的节目说明包含一些链接。

可能存在与隐私相关的问题,尤其是如果您的软件并非仅在一家公司中使用。

【讨论】:

  • 我真的很喜欢面向方面编程的想法,尤其是因为 Java 内置了 AspectJ,这将使我的生活变得非常轻松!
【解决方案2】:

我认为记录大型系统的每个方法调用是个坏主意。有些方法会被调用很多次,日志文件会被方法调用日志语句淹没。

每次我看到大型系统中的每个方法调用都记录在 DEBUG 级别或更精细,并且可以在需要时选择性地打开(而且很少如此)。

最好在更粗略的级别上使用这种日志记录更具战略性,例如记录高级请求、用户启动的活动、作业启动等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    相关资源
    最近更新 更多