2016-09-15 99 views
2

以下是这种情况:我试图让自己和员工不要浪费时间来编写用户从未使用过的功能修补程序。我工作的应用程序已经存在了10年,并且具有许多可能永远不会被客户使用的功能,即使在某些时候它们也是如此。我发现自己在兔子洞里修复了从未报告过的问题,因为QA和客户从未遇到过这些问题。我不想在代码中留下重大问题,但我也不能删除它,因为这个类的某些部分可能在其他地方使用。应用程序中使用的记录功能/功能

我提出了某种记录体系结构,用于在用户使用应用程序时跟踪应用程序内的每个函数调用或对象创建。通过这种方式,我们可以要求客户将日志文件存储在我们创建的文件夹中的某处。一旦我们在一段时间(1-2个月左右)之后获得了所有用户的所有日志,我们就可以分析日志并准确查看正在使用哪些功能和功能。我相信这些数据对于发现我们的客户如何使用我们的应用程序非常有用。它也可以指向我们的应用程序中的功能,这些功能根本不会被使用,以及哪些功能使用得最多。

什么是一个很好的解决方案/架构,设计模式来实现这个日志功能到现有的大型代码库?或者这只是一个坏主意?

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

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

那么如果函数只在闰年的闰日中调用呢?去除这可能是一个“坏主意”。 –

+0

是的,这是一种可能性...也许日志只会帮助优先考虑功能缺陷? @ElliottFrisch –

回答

2

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

你不是第一个有这样想法的人。分析通常在网页和网络应用程序中进行。这可能主要是由商业考虑所驱动的。

DevOps社区也有一些想法。我认为很有可能已经实现了你想要的东西。这podcast episode是关于这个话题。它不是英文版,但链接页面上的演示文稿包含一些链接。

可能存在与隐私相关的问题,尤其是如果您的软件未在单个公司中使用。

+0

我真的很喜欢面向方面编程的想法,尤其是因为Java内置了AspectJ,使得我的生活变得非常简单! –

0

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

每当我看到每个方法调用都记录在一个大型系统中时,日志记录处于DEBUG级别或更高级别,并且可以根据需要有选择地启用(并且很少有)。

对于这种日志记录和更粗略的级别(如记录高级别请求,用户启动的活动,工作启动等),更好的策略是使用这种日志记录。