你好,感谢你阅读此帖.我现在想在Winform中实现一个日志记录的功能,如果程序运行过程中出现异常,则把这些日志记录下来所以我的代码里面有很多try...catch语句块,
我想记录的日志内容包括:
1.当前操作的窗体名称   this.Text
2.当前操作的类型名称,比如点击了哪个按钮,或者正在处理哪个消息  
3.异常信息  e.Message
就是2里面的内容经常变,我知道可以利用当前事件里面的sender来获取触发此事件一些信息,但是有时候有些异常并不是直接由事件引起的,所以没有sender这个参数....所以我现在感觉处理日志记录有点麻烦,要在程序里面加好多代码,希望大家分享一下好的解决方案,不胜感激.
祝大家工作愉快!热烈欢迎一起讨论.

解决方案 »

  1.   

    Log4Net
    把这个吃透基本上就够用了..近期在啃这个...
      

  2.   


    我也知道有这个控件,但是因为我这个软件是商业用途的,我怕万一有什么版权问题就麻烦了,
    不过好像log4net是开源的
    上次看了一下,没有深入
      

  3.   

    很有意义的一件事啊,非常支持项目写日志。可以考虑使用Appdomain上的unhandledexception,试试取里面的innerexception,至于说的点那个窗体,那个按钮,我感觉可以把异常的堆栈信息输出,从里边可以看到整个调用过程
    可以分析出是哪个窗体(类)的那个方法抛出的异常日志模块可以考虑用Log4net 或el logging
      

  4.   

    Log4net上次研究了一下,如果要把记录保存在数据库的话,不知道怎么设置数据库的相对路径,呵呵 .
      

  5.   

    你可以考虑在异常里面输出Trace.WriteLine或者Debug.Writeline这样的话比较好做,捕捉这些东西。我们的产品就是这样做的。
      

  6.   

    希望能够做个TraceLogger的类,里面就是往一个固定的流里面写你的信息。这个比较好做。
    你可以在你的事件里面捕捉异常,catch里面可以用TraceLogger输出信息类似于"命名空间.方法名."+(sender as Control).Name+ex.Message
    ex为异常的对象。
      

  7.   


    呵呵,我现在就是这样做的,不想用log4net控件
    只是每个Catch里面都要写代码,好繁冗哦.
      

  8.   

    在敏感地区,就是你觉得很容易出错,或者有出错可能在一些日志记录。其它地方就是可以在Catch到的Error送到你的记录类存储区就好了