zoukankan      html  css  js  c++  java
  • System.Diagnostics.Trace.实现对程序的跟踪

    我们写完一个程序以后,如果在客户那里出现了问题,由于环境不同找起来很麻烦,比较好的一个方法就是在程序里面写上日志,这样如果出问题的话,直接查看日志就可以了。

    写日志当然有很多开源的东东,也可以自己来写。但是一是实现起来比较麻烦,二是需要一段时间来学习,三是可能会有潜在的问题。尤其是涉及到多线程的时候,潜在的问题就更多。

    其实.net已经提供了现成的类,使用起来非常方便。它就是System.Diagnostics.Trace. 这个类提供了很多方便的方法,比如Write, WriteLine等等。这个类还支持输出目标的设置,可以使用系统内置提供的Listener,也可以自己写Listener.

    我写了一个简单的例子,这个例子使用了Trace,Listener,更重要的是使用了多线程。

    Program.cs:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading;

    using System.Diagnostics;

    namespace TraceSample

    {

    class Program

    {

    static void Main(string[] args)

    {

    ThreadStart threadDelegate = new ThreadStart(Worker.Execute);

    for (int i = 0; i < 5; i++)

    {

    Thread thread = new Thread(threadDelegate);

    thread.Name = String.Format("My Thread {0}", i );

    thread.Start();

    }

    }

    }

    public class Worker

    {

    public static void Execute()

    {

    for (int i = 0; i < 500; i++)

    {

    Console.WriteLine("This is No. {0} task in No. {1} thread", i, System.Threading.Thread.CurrentThread.Name);

    Trace.WriteLine(String.Format("This is No. {0} task in No. {1} thread",i, System.Threading.Thread.CurrentThread.Name), "Information");

    }

    }

    }

    }

    App.config:

    <?xml version="1.0" encoding="utf-8" ?>

    <configuration>

    <system.diagnostics>

    <trace autoflush="false" indentsize="4">

    <listeners>

    <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" />

    <remove name="Default" />

    </listeners>

    </trace>

    </system.diagnostics>

    </configuration>

    输出结果截图:

    从输出结果可以看出,该类对多线程支持良好。

    这个例子很简单,这里只是想抛砖引玉,告诉大家以后记Log不用费尽心思自己写或者找开源的东东了,微软已经做好啦。

    Trace类支持很多的输出方法,可以看这里

    http://msdn.microsoft.com/zh-cn/library/system.diagnostics.trace_methods.aspx

    如果想要记更详细的Log,可以使用EventLog类:

    http://msdn.microsoft.com/zh-cn/library/system.diagnostics.eventlog.aspx

    更多用于程序跟踪的类,在这里:

    http://msdn.microsoft.com/zh-cn/library/gg145030.aspx

     
  • 相关阅读:
    窗体控件JFrame的使用
    WindowBuilder的安装与简介
    Swing事件机制
    Swing的MVC结构
    Swing框架的继承关系
    SWT简介
    Swing简介
    AWT简介
    Java界面设计
    使用Java建立聊天客户端
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2551017.html
Copyright © 2011-2022 走看看