`
mlzboy
  • 浏览: 726699 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于程序日志的设计思考,及写程序时候的心态2009-12-16

阅读更多

最近在写一个分布式缓存的框架性基础性组件,和以往做个网站,写个程序不同的是,如果写得不好,可能对全局都会有影响,因此在写这种程序代码时,你会有一种压力。

比如:万一在生产环境用这个组件出了问题怎么办?是否能够迅速定位到错误的地方,找出原因修正?

原先我写程序都是象征性的用一下log4net,common-logging之类的输出日志:

private static ILog logger = LogManager.GetLogger(typeof (LocalcacheBackend));

logger.Info(m=>m("由于没有收到任何set消息,因此这里不触发CacheItemSetedReceived事件"));

可是在生产环境这种海量利复杂的环境下,你就会担心一个是日志量巨大,出了问题不好排查,一般都只记录到Error级别,记录到这个级别的日志,是否足以让你找到错误,多久你能分析出错误,并修复它。

我思考的问题是log4net之类只的日志记录组件,提供给我们了记录日志的方案,仅是一个工具,但是具体在实际中如何设计一个有层次能够及时在复杂生产环境中,快速找到问题,还需要一定的方法和理论的知识,这些知识一般的书本上都没有告诉你,需要你在实际中去摸索和总结。

另外我也发现,log4net等提供的记录RollingLogFileAppender并不是非常实现,一般只用来做为事后备查的手段,在开发的过程中使用UdpAppender更为实时有效,这里有篇文章大家可以参考

CodeProject: A log4net Realtime Color Console for ASP.NET. Free source code and programming help

但在实际生产环境中我还没有找到一个比较好的组合方案,但是下面几个appender是我觉得在生产环境中值得应用推荐的

Product env:

RollingFileAppender

SmtpAppender/SmtpPickupDirAppender

TraceAppender

EventLogAppender

Dev env:

EventLogAppender

RollingFileAppender

UdpAppender

OutputDebugStringAppender

ColoredConsoleAppender

具体还是得根据实际的场景去量体裁衣,熟读log4net的配置文档,

Apache log4net - Apache log4net: Config Examples

另外一个发现是log4net已经对.net内建的System.Diagnostiscs命名空间下的Debug和Trace功能提供了支持,原先我还在想如何整合这一块的内容进去呢

System.Diagnostics命名空间里的Debug类和Trace类的用途 - 破浪 - 博客园

c#中的跟踪2 - Diwore - 博客园

浅谈C#中的Trace和Debug类【转】 - 从绝望中寻找希望,人生终将辉煌! - 博客园

在做日志分析时需要有好的图形界面工具,特别是对于多线程程序就更加依赖这种工具如:

logParser

TraceTool 8: The Swiss-Army knife of trace - The Code Project - C# Programming

我在此也只是罗列一下,我并没有找到特别合适的工具,由于工作任务繁重,也就先告一段落,以后有机会再捡起来继续深究一下。在此小记一下,以便回忆。

分享到:
评论

相关推荐

    程序调试黑宝书.pdf

    通过以上内容的总结和扩展,我们可以看出《程序调试黑宝书》旨在帮助读者建立正确的编程思维,掌握有效的调试技巧,并通过具体的实例加深对程序设计和调试的理解。无论是对于新手还是有一定经验的开发者,都能从中...

    关于计算机专业的实习日记

    ### 关于计算机专业实习日记的知识点总结 #### 一、实习背景与心态调整 - **全球金融危机背景**:本文档记录的时间为2009年,正值全球金融危机时期,这给寻找实习机会带来了额外的挑战。 - **大学生心态变化**:...

    单片机STM32和MCU基础知识大全.pdf

    他们不仅需要掌握硬件知识,还需要熟悉操作系统、驱动程序等技术领域。 - **职业发展**:随着物联网(IoT)和智能设备的快速发展,对嵌入式工程师的需求持续增长。具备多年经验的高级工程师能够获得较高的薪酬待遇。...

    linux-cmd.zh

    - 谦虚:始终保持学习的态度,对新技术持开放心态。 - 严谨:对待每一行代码都应认真负责,确保程序的质量。 - 勤思:多思考问题背后的原理,不断探索更优的解决方案。 - 善问:遇到难题时勇于寻求帮助,利用...

    ChatGPT人生操作指南·1000个AI问答集.pdf

    - 思考遇到的问题及解决方案,进行自我反思。 **如何有效地进行资料整理?** - **关键点:**分类明确、标签一致、检索迅速。 - **解决方案:** - 根据内容属性进行分类存储; - 统一使用标签系统,确保一致性; ...

    c语言短学期实践日志心得模板.pdf

    【C语言短学期实践日志心得】 在当前的科技时代,计算机扮演着至关重要的角色,而C语言作为计算机编程的基础语言之一,对于理解和掌握计算机工作原理具有重要意义。通过短学期的C语言实践日志,我们可以深入理解...

    java面试提前准备

    - **多线程与高并发**:能够设计并实现多线程程序,理解线程安全的概念及其实现方法;掌握常见并发工具类如`CountDownLatch`、`Semaphore`等的使用。 - **设计模式应用**:熟悉常用的设计模式,如单例模式、工厂模式...

    Java面试考核目标.docx

    - 初级:能够理解基本语法并编写简单的程序。 - 中级:能够熟练运用面向对象的思想进行编程,并具备一定的调试能力。 - 高级:能够独立完成复杂功能模块的设计与实现,了解设计模式。 - 资深/专家:能够对现有...

    ### 电子、通信、计算机大类的学生课程实验心得与案例

    - **调试过程中的心态调整**:无论是调试电路还是软件程序,都需要耐心地检查每一个细节,有时候可能只是因为一个很小的错误导致整个系统无法正常运行。 - **培养严谨的科学态度**:在实验中养成仔细记录数据的...

    大四计算机顶岗实习日记10篇.docx

    在这一天,实习生通常会被介绍给团队成员,并听取主管关于公司概况的简介。了解公司的业务范围、主营业务、市场定位等基本信息对于快速融入团队非常重要。 - **心态调整**:从校园到职场的转变可能会让部分学生感到...

    易效能晨间日记模板

    如果是使用电子设备,推荐使用支持标记、分类等功能的应用程序,便于日后检索和回顾。 **1.2 每天复制笔记** 为了提高效率,可以预先设置一个晨间日记的模板,每天通过复制前一天的日记模板来开始新的一天。这种...

    MySQL的面试题,以及对应的答案

    4. **清晰表达**:在回答问题时,清晰地阐述你的思考过程和分析方法。 5. **SQL编写**:练习编写各种查询,如JOIN、子查询和聚合函数,以应对可能的现场编程测试。 6. **心态调整**:保持冷静,即使面对未知问题也能...

    程序员晋级之路

    1. **学习脚本语言**:如Python或Ruby,这些语言能够帮助初学者快速上手编程,并能够用于开发实用的小型应用程序。通过实践文本处理、文件系统操作、数据库交互等项目,进一步巩固基础知识。 2. **掌握编程工具**:...

Global site tag (gtag.js) - Google Analytics