189 8069 5689

C#如何实现跟踪-创新互联

这篇文章给大家分享的是有关C#如何实现跟踪的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

创新互联是一家专注于网站设计制作、成都网站制作与策划设计,临猗网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:临猗等地区。临猗做网站价格咨询:028-86922220

一、为什么需要用到跟踪技术:

        利用跟踪功能可以从正在运行的应用程序(发布后的程序)中查看消息。我们把定义消息(不同级别的消息)的代码写在应用程序中,根据配置文件中配置,从而写入不同级别的消息。这些消息会写入到哪呢?vs默认是写入到输出窗口上的。输出窗口只能在调试状态下看的见。当我们跟踪发布后的程序那怎么办呢?我们需要在配置文件中定义一个侦听器,来接受从应用程序中写入的消息。下面来具体的介绍跟踪

二、跟踪体系架构:

①,跟踪源:跟踪信息的源头。例如:需要跟踪程序集或跟踪某个命名空间某个类

②,开关:开关定义了要记录的信息级别。例如:可以请求错误信息或详细详细

③,侦听器:定义了写入跟踪消息的位置。

④,筛选器:筛选要记录的信息级别。例如:开关定义了Information级别,可以用过筛选只记录Error信息级别

需要引用命名空间:using System.Diagnostics;

三、参数对照表

 几种侦听器类型
侦听器描述
System.Diagnostics.XmlWriterTraceListener写入Xml文件
System.Diagnostics.TextWriterTraceListener写入文本
System.Diagnostics.DelimitedListTraceListener写入带有分隔符的文本,配置文件属性( delimiter=":")设置分隔符号
System.Diagnostics.EventLogTraceListener写入事件日志
WebPageTraceListener写入web跟踪文件trace.axd中
TraceEventType跟踪事件类型(  
事件描述
Critical定义了致命错误或应用程序崩溃
Error表示可恢复的错误
Information信息性消息
Verbose调试跟踪
Warning非关键性问题(警告)
Transfer相关标识的更改
Start逻辑操作的开始
Stop逻辑操作的停止
Suspand逻辑操作的挂起
Resume逻辑操作的恢复
 SourceLevels开关级别(
级别描述
ActivityTracing允许 Stop、Start、Suspend、Transfer 和 Resume 事件通过。
All允许所有事件通过。
Critical只允许 Critical 事件通过。
Error允许 Critical 和 Error 事件通过。
Information允许 Critical、Error、Warning 和 Information 事件通过。
Off不允许任何事件通过。
Verbose允许 Critical、Error、Warning、Information 和 Verbose 事件通过。
Warning允许 Critical、Error 和 Warning 事件通过。
 TraceOptions制定要写入跟踪输出中的跟踪数据选项(侦听器的traceOutputOptions属性
参数描述
Callstack写入调用堆栈
DateTime写入日期和时间
LogicalOperationStack写入逻辑操作堆栈
None不写入如何操作
ProcessId写入进程标识
ThreadId写入线程标识
Timestamp写入时间戳

 四、配置跟踪文件:



     
        
    
 
  
    
    
      
        
          
          
            
            
            
            
          
        
      
    
    
    
    
      
      
    
    
    
    
    
    
      
    
    
    
    
    
    
    
  
  

五、在应用程序中写入消息代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace TraceDome4
{
    class Program
    {
        //跟踪源
        internal static TraceSource trace = new TraceSource("TraceDome4");
        static void Main(string[] args)
        {
            //逻辑操作的开始
            trace.TraceEvent(TraceEventType.Start, 0, "逻辑操作的开始");
            //写入普通消息
            trace.TraceInformation("写入消息");
            //写入错误消息,根据TraceEventType枚举不同的消息级别
            trace.TraceEvent(TraceEventType.Error, 0, "错误消息");
            //逻辑操作的结束
            trace.TraceEvent(TraceEventType.Stop, 0, "逻辑操作的结束");
            //写入普通消息
            trace.TraceInformation("写入消息");
        }

    }
}

使用服务跟踪查看器,查看xml

C#如何实现跟踪

C#如何实现跟踪

五、在应用程序中写入消息代码(相关性)

    使用相关性必须给跟踪数据选项设置Callstack,LogicalOperationStack

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Threading;
namespace TraceDome4
{
    class Program
    {
        //跟踪源
        internal static TraceSource trace = new TraceSource("TraceDome4");
        static void Main(string[] args)
        {
            //设置一个活动ID
            Trace.CorrelationManager.ActivityId = Guid.NewGuid();
            //逻辑操作的开始
            trace.TraceEvent(TraceEventType.Start, 0, "逻辑操作的开始");
            //启用线程上的逻辑操作
            Trace.CorrelationManager.StartLogicalOperation("Main Operation");
            //写入普通消息
            trace.TraceInformation("写入消息");
            //写入错误消息,根据TraceEventType枚举不同的消息级别
            trace.TraceEvent(TraceEventType.Error, 0, "错误消息");
            //开启一个线程
            Thread th = new Thread(new ThreadStart(Simple));
            th.Start();

            //停止线程上的逻辑操作
            Trace.CorrelationManager.StopLogicalOperation();
            //逻辑操作的结束
            trace.TraceEvent(TraceEventType.Stop, 0, "逻辑操作的结束");

        }

        private static void Simple()
        {
            //设置一个活动ID
            Trace.CorrelationManager.ActivityId = Guid.NewGuid();
            //启用线程上的逻辑操作
            Trace.CorrelationManager.StartLogicalOperation("Simple Operation");
            //写入警告消息
            trace.TraceEvent(TraceEventType.Warning, 0, "警告消息");
            //停止线程上的逻辑操作
            Trace.CorrelationManager.StopLogicalOperation();
           
        }
 

    }
}

C#如何实现跟踪

感谢各位的阅读!关于“C#如何实现跟踪”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:C#如何实现跟踪-创新互联
分享地址:http://cdxtjz.cn/article/jpeco.html

其他资讯