日志模块
企业库的日志模块简单的实现了日志功能的常用功能。开发者可以利用模块在下面的位置记录信息:
-
事件日志
-
电子邮件
-
数据库
-
消息队列
-
文本文件
-
WMI的事件查看器
-
自定义的位置
模块为记录在任何位置的日志信息都提供了一系列接口。在你的应用中不需要指明信息的目的地。配置信息决定了是否记录日志,以及日志记录的位置。这就意味着开发者不需要修改应用代码就可以变更日志的行为。
本节包含下面的内容:
-
简介
-
使用模块进行开发
-
典型解决方案
-
模块的设计目的
-
扩展和修改模块
-
部署和实施模块
-
示例代码
-
1、 简介
通过下面的主题,你可以发现模块是否适合于你。
常用方案
开发者在开发过程中经常需要日志功能。典型的,响应应用事件的格式和日志信息。例如,开发者经常会写一些代码来记录非预期的日志,例如异常、或者是连接数据库失败。也包括一些跟踪应用流程的过程,参数的传递等等。
应用需要记录本地和网络的信息。某些情况,你还需要将多个位置的信息整理到一个目的地。
日志模块通过封装的一些列方法,简化了上面这些需求的实现。包括:
-
用代码增加和引发事件
-
增加带有其他环境信息的日志消息
-
跟踪应用的行为,增加上下文信息
-
构造日志信息之前,检查filter的状态
-
示例代码
private void RecordSelectedCategories()
{
categories.Add("Trace");
}
protected void Button1_Click(object sender, EventArgs e)
{
RecordSelectedCategories();
LogEntry log = new LogEntry();
log.EventId = 100;
log.Priority = 3;
log.Message = "information message";
log.Categories = Categories;
Logger.Write(log );
}
[NonSerialized]
private ICollection<string> categories = new List<string>(0);
[IgnoreMember]
public ICollection<string> Categories
{
get { return categories; }
set { this.categories = value; }
}
{
categories.Add("Trace");
}
protected void Button1_Click(object sender, EventArgs e)
{
RecordSelectedCategories();
LogEntry log = new LogEntry();
log.EventId = 100;
log.Priority = 3;
log.Message = "information message";
log.Categories = Categories;
Logger.Write(log );
}
[NonSerialized]
private ICollection<string> categories = new List<string>(0);
[IgnoreMember]
public ICollection<string> Categories
{
get { return categories; }
set { this.categories = value; }
}
什么时候选用日志模块
如果你的应用需要将日志信息记录到windows事件中,邮件中,数据库中,消息队列中,WMI中,或者是一个文件中,你可以考虑使用模块。在某些情况,日志模块非常有用,例如,你需要在优先级和目录上过滤日志,你需要格式化日志信息,你需要在不修改代码的情况下变更日志的记录位置。日志模块设计的很灵活,可以自定义格式和trace listener,满足你的特定需要。
日志的信息默认是明文记录的,如果又需要的话,可以通过访问控制列表来控制访问日志文件的用户,也可以自定义格式实现日志信息的加密。
2、在应用中使用日志模块
配置日志模块,如下图所示,右键菜单中选择【Logging Application Block】.