博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Enterprise Library Step By Step系列(七):日志和监测应用程序块——入门篇
阅读量:7058 次
发布时间:2019-06-28

本文共 2740 字,大约阅读时间需要 9 分钟。

写在前面:最近一段时间项目周期比较紧,所以这篇随笔出来的比较晚,希望喜欢本系列随笔的朋友谅解。上篇随笔写的也比较简单,我会抽时间补上的,先向大家道个歉^_^
一.日志和检测应用程序块概述:
Enterprise Library Logging and Instrumentation Application Block 版使开发人员可以在其应用程序中集成标准的日志和 监测 功能。应用程序可以使用日志和监测块在多个位置记录事件:
1 .事件日志(Event Log)
2 .电子邮件(Email)
3 .数据库(DataBase)
4 .文本文件(TextFile)
5 .消息队列(MSMQ)
6 .WMI
7 .用户自定义
二.日志和 监测 应用程序块在多个方面有助于应用程序的开发:
1 .它有助于在应用程序和整个企业中维护一致的日志和规范做法
2 .它使用一致的体系结构模型,使开发人员在学习过程中少走一些弯路。
3 .它提供了可用于解决常见的应用程序日志和规范问题的实现。
4 .它是可扩展的,并支持格式化程序和事件接收器的自定义实现。
三.几种常见的情况:
开发人员经常编写需要日志和 监测 功能的应用程序。通常,这些应用程序必须适当地格式化事件和记录事件,不论是在本地还是通过网络。在某些情况下,您可能需要对一台计算机上来自多个源的事件进行整理。
日志和 监测 应用程序块通过收集应用程序需要包含的多个最常见的日志和 监测 任务来简化应用程序的开发。每个任务都以一致的方式处理,并从特定的日志和 监测 提供程序中抽象应用程序代码。体系结构模型可让您通过更改配置来更改基础事件接收器和格式化程序,而无需更改应用程序代码。
四.日志项概述:
在记录日志时,都是创建一个日至项来承载记录的信息。每个日志项具有以下属性:
Message (必需项)
Cagegory (提供缺省值)
Priority (缺省值为-1)
EventID (缺省值为-1)
Severity (缺省值为Severity Unspecified)
Title (缺省值为“”)
五.几个重要概念:
Sink :日志记录的位置
Category :决定了你在程序中添加的日志写向何处,是通过配置来实现的。比如说我们有两个Category,第一个我们可以指定Sink为事件日志,第二个我们可以指定Sink为文本文件。
Formatter :格式器决定了日志记录的格式,通过配置实现,在进阶篇中我会重点去讲。
六.为应用程序添加日志:
为应用程序添加日志,步骤跟其他的应用程序块差不多,也是分为三步走:首先需要创建配置文件;在创建一个日志项对象,然后把它传给Logger.Write()方法。下面我们看一下具体的操作步骤:(同样我们认为您已经有了一个创建好的项目,并已经有了配置文件App.Config或Web.config)
1 .运行配置工具后,选择
File | Open Application 打开应用程序的配置文件。
2 .在Application上右击并选择
New | Logging and Instrumentation Application Block
3
.日志和监测应用程序块默认的
Client Settings
定义了
in-process   distribution strategy 和LogginEnabled为True。
4 .日志和检测应用程序块默认的
Distributor Settings
定义了两个Category(包括General和Trace)。我们看到在General下的
Event Log Destination
里面它的Sink为
Event Log Sink
它的Formatter默认为
Text Formatter
我们可以通过右击Categorys选择
New | Category
来新建一个Category。
]5
.选择
File | Save All
保存全部。
6
.最后别忘了拷贝目录。
None.gif
"
$(ProjectDir)\*.config
"
 
"
$(TargetDir)
"
7 .在项目中添加对应用程序块的引用。
Microsoft.Practices.EnterpriseLibrary.Logging.dll
8 .在程序中引用
1
None.gif
using
 Microsoft.Practices.EnterpriseLibrary.Logging;
9 .添加日志:
在这之前,为程序的规范性和严谨,我们先定义两个枚举:
 1
ExpandedBlockStart.gif
/// <summary>
 2InBlock.gif        /// 定义严重级别的枚举
 3ExpandedBlockEnd.gif        /// </summary>

 4
None.gif
        
public
 
struct
 Priority
 5
ExpandedBlockStart.gif        
{
 6InBlock.gif            public const int Lowest  = 0;
 7InBlock.gif            public const int Low     = 1;
 8InBlock.gif            public const int Normal  = 2;
 9InBlock.gif            public const int High    = 3;
10InBlock.gif            public const int Highest = 4;
11ExpandedBlockEnd.gif        }
12
None.gif        
13
ExpandedBlockStart.gif        
/// <summary>
14InBlock.gif        /// 定义类别的枚举
15ExpandedBlockEnd.gif        /// </summary>

16
None.gif
        
public
 
struct
 Category
17
ExpandedBlockStart.gif        
{
18InBlock.gif            public const string General = "General";
19InBlock.gif            public const string Trace   = "Trace";
20ExpandedBlockEnd.gif        }
添加日志,添加日志的工作全部都由Write方法来完成。
1
ExpandedBlockStart.gif
///创建一个日志项

2
None.gif
            LogEntry log 
=
 
new
 LogEntry();
3
None.gif            
4
None.gif            log.Message 
=
 
this
.txt_LogMessage.Text;
5
None.gif            log.Category 
=
 Category.General;
6
None.gif            log.Priority 
=
 Priority.Normal;
7
None.gif            
8
ExpandedBlockStart.gif            
///写入日志

9
None.gif
            Logger.Write(log);
10 .打开事件查看器,我们可以看到,在里面写入了一条日志信息:
11 .双击日志信息,可以查看详细的内容:
 
至此,一个完整的日志记录我们就做完了。入门篇就到这里,另外,大家可以看一下:
在进阶篇里我会讲创建包含名-值对的字典,过滤事件,定制日志消息的格式,配置同步和异步等内容。
本文转自lihuijun51CTO博客,原文链接:
http://blog.51cto.com/terrylee/67607
 ,如需转载请自行联系原作者
你可能感兴趣的文章
要点提炼| 理解JVM之GC&内存分配
查看>>
Android小知识-Java多线程的基础知识了解下
查看>>
人人都能懂的Vue源码系列(二)—Vue构造函数
查看>>
Regular进阶: 几点性能优化的建议
查看>>
在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务
查看>>
44 道 JavaScript 难题(JavaScript Puzzlers!)
查看>>
我所不知的JS
查看>>
【记录】 Docker 的安装和通过 Docker 使用 Tomcat and mongoDB 的过程
查看>>
MySQL数据库运维之数据备份02
查看>>
nginx实现反向代理和负载据均衡
查看>>
渐进式Web应用(PWA)入门教程(下)
查看>>
connect.js中间件实现之函数队列思想
查看>>
安装配置gunicorn和NGINX的学习笔记
查看>>
【转】ionic之AngularJS手势事件
查看>>
生成随机数字
查看>>
node入门基础
查看>>
二、数据的存放put
查看>>
chrome - 收藏集 - 掘金
查看>>
个人常用JavaScript及React常用优化总结
查看>>
测试你的前端代码 - part1(介绍篇)
查看>>