65.9K
CodeProject 正在变化。 阅读更多。
Home

LogViewer - 一个简单的日志侦听实用程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.81/5 (14投票s)

2009年1月2日

CDDL

4分钟阅读

viewsIcon

87425

downloadIcon

8412

简单的日志监听工具,可以监听来自多个源的日志事件,例如:TCP/UDP、文件日志、Remoting通道

NLog_Client

引言

在我作为软件开发人员的这些年里,我认识到了应用程序开发中完美日志记录的精髓。作为开发的一部分,编写日志语句似乎是一项混乱的任务,尽管它在调试应用程序时提供了完美的解决方案,尤其是在生产环境中(我们甚至没有简单的 CLR 调试器)。 

在生产调试方面,日志记录比其他策略更有价值,因为日志记录成为沟通应用程序内部进程的唯一方式。我们既不能设置调试观察,也不能设置断点在某个时间点停止执行。虽然我们可以使用 debug.assert 语句,但同样不方便。总的来说,在我看来,应用程序就像一个黑匣子,对执行没有严格的控制。 

问题

现在,我想简要介绍一下写这篇文章的动机。为调试应用程序而开始使用日志记录是可以理解的,但同时必须存在一些工具来评估应用程序运行时生成的日志。在我看来,我需要一个能够满足以下承诺的工具:

  1. 它必须支持监听日志文件中的日志事件。
  2. 它必须支持通过网络监听日志事件,即 TCP 或 UDP 端口。
  3. 它必须支持在 Remoting 通道上监听日志事件。
  4. 最重要的是,它必须是开源的,并附带完整的源代码。

我完全同意,在评估日志监听工具时可能还有其他标准,但以上标准是我最关心的。

解决方案

我希望您一直关注到这篇文章,并且您会发现,需要一个能够提供直观的用户界面和多种方式来监听来自多个源的日志事件的工具。

因此,我研究了这个主题,并得出了一个决定性的以下实用工具列表:

我想赞赏以上所有工具,但由于以下原因,它们都不适合我的要求:

  • 有些在支持定制方面过于受限。
  • 有些来自 Java 世界,使用它们必须了解一些 Java 基础知识。
  • 有些需要维护自己的配置设置。
  • 最后,有些是商业软件,在免费版中不支持同时监听多个源。

在经过这一切的痛苦挣扎之后,我决定自己实现。因为这是我仅剩的选择,而且我必须相信自己的能力(是的,我能做到)。    

事后来看,有个好消息是,在与我的 PC 进行了大量的努力,并熬夜阅读了一些文本后,我设计了一个工作稳定且可靠的应用程序。我正在大量使用这个应用程序来满足我所有的日志记录需求。现在我想就我正在讨论的这个工具给您一些提示。嗯,我开发的这个工具被称为 **LogViewer - 一个简单的日志监听工具**,它支持以下行为:

  1. 监听日志文件中的日志事件。(它使用 FileSystemWatcher 组件实现,感谢 .NET Framework 团队)。
  2. 通过 TCP 协议监听日志事件。(为了支持 NLog 的 NetworkTarget。它使用 System.Net.Sockets 实现,再次感谢 .NET Framework 团队)。
  3. 通过 UDP 协议监听日志事件。(为了支持 log4net 的 UdpAppender 和 NLog 的 NetworkTarget,感谢 log4net 的贡献者)。
  4. 通过 Remoting 通道监听日志事件(为了支持 log4net 的 RemotingAppender,感谢 log4net 的贡献者)。

从以上描述中,非常清楚这是一个简单的日志事件监听工具,它支持同时监听来自多个源的日志事件。当您开始使用它时,其余功能将变得更加清晰。

好了,各位。

"祝您有一个充满希望和充实的新年"

如果您喜欢这个工具,请将您的建议发送给我,并请为本文投票。

致谢

我想将本文的功劳归于以下开源日志框架:

  1. Log4Net

  2. NLog

免责声明

本工具不遵循任何标准设计模式,并由作者“按原样”提供,并且作者不承担任何明示或暗示的保证,包括但不限于适销性和特定用途适用性的暗示保证。在任何情况下,作者均不对因使用本软件而产生的任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润损失;或业务中断)负责,无论其如何引起,也无论基于何种责任理论,无论是合同、严格责任还是侵权(包括疏忽或其他),即使已被告知发生此类损害的可能性。   

历史 

  • 首次修订 1.0 于 2009 年 1 月 2 日
© . All rights reserved.