1、概述
一般来说,日志模块是一个项目必不可少的部分。最常用的场景就是将对业务数据的操作记录下来,用于以后的安全审计。比如进行了何种操作,修改的数据是什么等等。其他的应用有:
------ 跟踪程序的运行,将运行中的一些信息记录下来,这对于程序开发时期和试用时期非常重要,我们可以根据这些信息对程序加以改进。
------将日志信息写到不同的地方,比如写系统日志中、写到数据库中,甚至发送email等。
------可定制的日志输出格式。
------将一条日志同时发往不同的地方。
------ 对于日志我们要设置其优先级,以决定是否记录,记录的位置、格式等等。
当然还有其他一些对日志的要求。在这里关键的是当我们对日志的处理策略发生该变时,我们往往要修改原代码,这不但要重新编译程序,而且会带来很大的工作量。日志应用程序块的出现改变了这种情况,我们可以在运行时改变配置文件,从而改变记录日志的种类、优先级、目的地等等。
在此我们以将日志写到数据库为例,简要介绍其用法
2、配置步骤
⑴添加日志应用程序块
添加后,我们可以看到日志和监控应用程序块有两个配置节,一个为Client Settings,一个为Distributor Settings。实际在物理上,系统用两个配置文件来分别保存着两个设置(loggingconfiguration.config和loggingdistributorconfiguration.config)。
Client Settings用于设置发布策略,这里有两种,即In Process和MSMQ。进程内发布是一种同步发布方式,我们比较常用,MSMQ是异步发布方式,用于将日志发布到MSMQ对列,由MSMQ依次处理。Distributor Settings用于设置各种类别的日志的发布目的地和格式,日志可以按不同的分类方式进行分类,这个我们自己掌握,比如可以将日志分为操作的安全审计日志、登录日志、跟踪日志等等,每种日志又具有持久化格式和发布目的地(也叫接收器),在这里我们可以设置多种发布格式和接收器,在设置每种类别的发布格式和接收器时,可以从中选择。除了默认的接收器Event Log Sink和Flat File Sink外,我们这里还设置了一个Database Sink。
也就是添加接收器类型,我们添加一个Database Sink,设置好其数据库实例名称和存储日志的SP名。
根据我们自己应用程序的要求添加类别,如安全审计日志、登录日志、跟踪日志等等,对于每个类别取一个比较有意义的名字。
对于添加的每个日志类别,添加发布目的地,一个日志类别可以添加多个发布目的地,设置每个发布目的地的日志格式和接收器。
3、写代码
记录日志的代码如下:
Logger.Write("logMessage", "LogCatagory", 1);
//或者
LogEntry logEntry = new LogEntry();
logEntry.Category = " LogCatagory ";
logEntry.Priority = 1;
logEntry.Severity = Severity.Error;
logEntry.Message = logMessage;
Logger.Write(logEntry);
日志记录的内容非常详细,除了有日志消息外,还有很多附加信息,如日志的类别、优先级、机器名称、应用程序域、时间贴等等。我们可以动态的改变日志的优先级和发布目的地,而不用重新编译、部署程序。