Enterprise Library 2.0 Hands On Lab 翻译(5):日志应用程序块(二)

简介:
练习2:创建并使用自定义的Trace Listener
在本练习中将创建一个自定义的Trace Listener,发送日志项到一个标准的控制台输出,并添加该Trace ListenerEnoughPI应用程序。
 
第一步
打开EnoughPI.sln项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Logging\exercises\ex02\begin,并编译。
 
第二步 创建自定义Trace Listener
1 .选择项目EnoughPI.Logging,选择Project | Add Reference…菜单命令,添加如下程序集,默认的位置应该为C:\Program Files\Microsoft Enterprise Library January 2006\bin
Microsoft.Practices.EnterpriseLibrary.Common.dll
Microsoft.Practices.EnterpriseLibrary.Logging.dll
2 .在解决方案管理器中选择TraceListeners\ConsoleTraceListener.cs文件,单击View | Code菜单命令,添加如下命名空间。
using  Microsoft.Practices.EnterpriseLibrary.Common.Configuration;

using  Microsoft.Practices.EnterpriseLibrary.Logging;

using  Microsoft.Practices.EnterpriseLibrary.Logging.Configuration;

using  Microsoft.Practices.EnterpriseLibrary.Logging.Formatters;

using  Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners;
3 .添加如下代码到ConsoleTraceListener类中。
[ConfigurationElementType( typeof (CustomTraceListenerData))]

public   class  ConsoleTraceListener : CustomTraceListener
{
    
public ConsoleTraceListener()

        : 
base()
    
{

    }



    
public override void TraceData(TraceEventCache eventCache,

        
string source, TraceEventType eventType, int id, object data)

    
{
        
if (data is LogEntry && this.Formatter != null)

        
{
            
this.WriteLine(this.Formatter.Format(data as LogEntry));

        }


        
else

        
{
           
this.WriteLine(data.ToString());
        }


    }


    
public override void Write(string message)
    
{
        Console.Write(message);
    }


    
public override void WriteLine(string message)

    
{
        
// Delimit each message

        Console.WriteLine((
string)this.Attributes["delimiter"]);

        
// Write formatted message

        Console.WriteLine(message);
    }


}
注意这里需要继承于基类 CustomTraceListener,并且需要覆写基类中的两个抽象方法: Write(string message)WriteLine(string message),另外由于需要格式化日志信息,还需要覆写 TraceData方法。 ConsoleTraceListener 类有一个参数delimiter,作为Listener配置的一部分。
4 .拷贝输出程序集到Enterprise Library的安装bin目录下面。选择项目EnoughPI.Logging,选择Project | EnoughPI.Logging Properties 菜单命令,并选择Build Events项,添加如下命令到编译完成后事件中:
copy "$(TargetPath)" "..\..\..\..\..\..\..\..\..\bin"
Enterprise Library Configuration 工具将会自动加载相同目录下的程序集。
5 .选择File | Save All菜单保存。
6 .选择Build | Build Solution,编译整个解决方案。
 
第三步 使用自定义Trace Listener
1 .在解决方案管理器中选择项目EnoughPI的配置文件App.config文件,选择View | Open With…菜单命令,选择Enterprise Library Configuration并单击OK按钮。
2 .选中节点Logging Application Block | Trace Listeners,并选择Action | New | Custom Trace Listener菜单命令。
3 .设置属性FormatterText Formatter
4 .选中Type属性,单击ellipses显示Type Selector对话框。
5 .在程序集EnoughPI.Logging中选择ConsoleTraceListener类并单击OK按钮。
Type Selector列表中的类,来自于与Enterprise Library Configuration配置工具在同一目录下的程序集,它们继承于基类CustomTraceListener,并且有一个值为CustomTraceListenerData的特性ConfigurationElementType
6 .选择Attributes属性并单击ellipses显示EditableKeyValue Collection Editor
7 .单击Add按钮添加一对新的键值对:
Key = delimiter
Value = "---------------------------"
并单击OK按钮。
还记得我们在类ConsoleTraceListener中曾经有一个期望的参数名为delimiter,它将打印在每条日志项信息的开始位置。
8 .选中Logging Application Block | Category Sources | General节点,选择Action | New | Trace Listener Reference菜单命令。
9 .设置属性ReferencedTraceListenerCustom TraceListener
10 .选择File | Save All菜单保存配置,并关闭Enterprise Library Configuration工具。
注意如果没有关闭Enterprise Library Configuration工具,在下次编译项目EnoughPI.Logging时编译完成后事件将失败。
 
第四步 查看TraceListener输出
1 .选择项目EnoughPI,并选择Project | EnoughPI Properties…菜单命令,在项目属性对话框中选择Application设置Output typeConsole Application
2 .选择File | Save All菜单保存。
3 .选择Debug | Start Without Debugging菜单命令并运行应用程序,EnoughPI程序用来计算∏的精度。在NumericUpDown控件中输入你希望的精度并点击Calculate按钮。可以看到日志项显示在一个控制台窗口中。
完成后的解决方案代码如C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Logging\exercises\ex02\end所示。
 
更多Enterprise Library的文章请参考《Enterprise Library系列文章













本文转自lihuijun51CTO博客,原文链接: http://blog.51cto.com/terrylee/67635  ,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
10月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
3208 110
|
运维 监控 Cloud Native
一行代码都不改,Golang 应用链路指标日志全知道
本文将通过阿里云开源的 Golang Agent,帮助用户实现“一行代码都不改”就能获取到应用产生的各种观测数据,同时提升运维团队和研发团队的幸福感。
884 152
|
监控 安全 Linux
AWK在网络安全中的高效应用:从日志分析到威胁狩猎
本文深入探讨AWK在网络安全中的高效应用,涵盖日志分析、威胁狩猎及应急响应等场景。通过实战技巧,助力安全工程师将日志分析效率提升3倍以上,构建轻量级监控方案。文章详解AWK核心语法与网络安全专用技巧,如时间范围分析、多条件过滤和数据脱敏,并提供性能优化与工具集成方案。掌握AWK,让安全工作事半功倍!
497 0
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
2758 28
|
存储 监控 算法
基于 PHP 语言的滑动窗口频率统计算法在公司局域网监控电脑日志分析中的应用研究
在当代企业网络架构中,公司局域网监控电脑系统需实时处理海量终端设备产生的连接日志。每台设备平均每分钟生成 3 至 5 条网络请求记录,这对监控系统的数据处理能力提出了极高要求。传统关系型数据库在应对这种高频写入场景时,性能往往难以令人满意。故而,引入特定的内存数据结构与优化算法成为必然选择。
382 3
|
存储 人工智能 JSON
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
RAG Logger 是一款专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、检索结果记录、LLM 交互记录和性能监控等功能。
771 7
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
|
SQL 数据库
【YashanDB知识库】应用绑定参数的慢查询,慢日志抓取不到
【YashanDB知识库】应用绑定参数的慢查询,慢日志抓取不到
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
405 0
|
存储 弹性计算 运维
海量日志接入 Elasticsearch Serverless 应用降本70%以上
本文将探讨在日志场景下,使用阿里云Elasticsearch Serverless相较于基于ECS自建Elasticsearch集群的成本与性能优势,展示如何通过Serverless架构实现高达 70%以上的成本节约。
1075 0
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
700 5