记录用户交互:log4j?

时间:2011-04-01 09:42:06

标签: java logging

我需要你的建议。 我有一个Java应用程序,我想记录用户使用我的应用程序的方式。 我想知道最常用的按钮是什么。 计算应用程序中新患者的平均引入时间。 等等。 在您看来,最好和最简单的方法是什么?它是否使用Log4j?

感谢您的合作。

最好的问候。

丹尼尔

4 个答案:

答案 0 :(得分:0)

考虑到相当高级别的要求,我也会尝试给出高级答案。对于这种与主要业务逻辑完全不同的横切关注点,我建议使用AOP(如果这是您选择的框架,则使用AspectJ或Spring AOP)。

构建良好的专用方面需要一些时间,但它肯定会得到回报,因为您可以逐渐引入此功能而不会干扰主要应用程序。

在这种情况下,我会使用一些共享的“统计容器”抽象来收集方面的信息,然后通过JMX或SNMP(或任何其他自定义解决方案)公开它。

答案 1 :(得分:0)

我不明白为什么log4j会是一个糟糕的选择。如果您有一个简单的应用程序,则以包含时间戳的格式(以及可能是应用程序性质的线程标识符)将消息记录到文件中可能是记录所需数据的简单方法。然后,您需要投入更多资金从日志文件中提取所需的信息。

并不是说反对AOP的建议确实更干净,但开始时也更复杂。

答案 2 :(得分:0)

什么可以分析您的访问日志,您可以看到最常访问哪个网址 - 这样您就可以看到最频繁点击的按钮 - 只有此按钮才会显示该网址。

答案 3 :(得分:0)

我已经考虑过为我的应用程序做类似的事情,并且至少记录一些高级用户事件(打开文件,保存,新等等)以便只给出一个日志文件,这样就有可能告诉用户正在做什么。

以下是一个很好的例子:
NetBeans Platform Gesture Collection Infrastructure

这应该会给你一些如何做你想做的事情的想法。如果您有一个Java Swing应用程序,它可能可以移植到NetBeans平台,然后您可以免费获得这个和更多。 免责声明:我是NetBeans平台上的开发人员。

尽管NetBeans称之为“手势集合”,但它似乎没有其他任何人,或者有一个通用术语; “用户行动分析”会很好,但几乎任何带有“分析”的东西现在都指向谷歌。许多程序都说“匿名使用数据”,并且找到了this similar question,这可能有助于某人使用Eclipse。

对于webapp,您应该能够从Web访问日志中收集大部分内容,可能会向请求添加一些其他信息(例如'& userButton = SaveAs'),甚至可以添加一些额外的Ajax-y事件跟踪用户(注意不要产生太多的额外流量:仅为某些用户启用;使用零字节文件最小化服务器响应 GET /zerobytes.txt?t=1313518123&event=hover&element=menuNav&duration=12)。这应该更容易使用jquery,并且可能不会对HTML进行任何更改。

在服务器端,可能有更丰富的工具可供选择,还有许多支持此功能的技术(JMX,MBeans,JSR-77等)。如果您正在谈论一个Web应用程序,JavaMelody可能会有一些特定于应用程序的自定义事件,特别是如果您可以将它们绑定到启动某种类型的服务器端处理。