免费凡科建站官网,在360上做网站多少钱,室内设计联盟效果图,宁波市有哪些网站建设公司企业库日志应用程序模块工作原理图: 从上图我们可以看清楚企业库日志应用程序模块的工作原理,其中LogFilter,Trace Source,Trace Listener,Log Formatter的信息都可以在Category配置文件中反映出来,通过配置文件,调用LogWriter类的Writer方法,就可以将包含日志信息的LogEntry实…企业库日志应用程序模块工作原理图: 从上图我们可以看清楚企业库日志应用程序模块的工作原理,其中LogFilter,Trace Source,Trace Listener,Log Formatter的信息都可以在Category配置文件中反映出来,通过配置文件,调用LogWriter类的Writer方法,就可以将包含日志信息的LogEntry实体写入Category配置文件中指定的设备了. 企业库日记应用程序模块提供了下列几种记录方法: The event log An e-mail message A database A message queue A text file A Windows®Management Instrumentation (WMI) event Custom locationsusing application block extension points 本文介绍一下如何使用企业库日记应用程序模块向日志文件,数据库,XML文件中写入程序操作日记: 一. 向日志文件写入日记 运行EntLibConfig.exe,选择Blocks菜单 ,单击 Add LoggingSettings . 2. 对每个模块进行配置: 3. 点击 File菜单,单击 Save,保存为一个App.config文件,可以先保存到桌面,之后要用到它. 4. 创建一个新的控制台应用程序,将App.config添加到程序内,并加入需要的Dll文件,在此我们要导入的是 Microsoft.Practices.EnterpriseLibrary. Logging.dll, Microsoft.Practices.EnterpriseLibrary. Logging.Database.dll并添加需要的引用: 添加引用: using Microsoft.Practices.EnterpriseLibrary. Logging; 5. 测试: using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Practices.EnterpriseLibrary.Logging;namespace ConsoleApplication1{class Program {staticvoid Main(string[] args) { LogEntry logEntry new LogEntry(); logEntry.EventId 1; logEntry.Priority 1; logEntry.Title 标题党; logEntry.Message http://www.cnblogs.com/huangcong/; logEntry.Categories.Add(C#学习); logEntry.Categories.Add(Microsoft Enterprise Library学习); Logger.Writer.Write(logEntry, General); Console.WriteLine(日志写入完成!); } }} 运行结果: 6. 开始—控制面板—系统和安全—查看事件日志—Windows日志—应用程序: 7. 第一个日志就是我们刚刚写入的日志啦,双击可以查看内容: 二. 向数据库写入日记 1. 要将日志写入数据库,就得先新建一个日志数据库,我们可以在EntLib50Src文件夹下的Source\Blocks\Logging\Src\DatabaseTraceListener\Scripts目录中找到LoggingDatabase.sql文件,只要在数据库中运行即可自动生成一个日志数据库: 为了方便大家,我直接将该文件发布在下面,大家直接复制到SQL中运行也可以: Logging数据库创建SQL /****** Object: Database Logging Script Date: 8/22/2005 ******/USE[master]GOIFEXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name NLogging)DROPDATABASE[Logging]GOCREATEDATABASE[Logging] COLLATE SQL_Latin1_General_CP1_CI_ASGOexec sp_dboption NLogging, Nautoclose, NfalseGOexec sp_dboption NLogging, Nbulkcopy, NfalseGOexec sp_dboption NLogging, Ntrunc. log, NfalseGOexec sp_dboption NLogging, Ntorn page detection, NtrueGOexec sp_dboption NLogging, Nread only, NfalseGOexec sp_dboption NLogging, Ndbo use, NfalseGOexec sp_dboption NLogging, Nsingle, NfalseGOexec sp_dboption NLogging, Nautoshrink, NfalseGOexec sp_dboption NLogging, NANSI null default, NfalseGOexec sp_dboption NLogging, Nrecursive triggers, NfalseGOexec sp_dboption NLogging, NANSI nulls, NfalseGOexec sp_dboption NLogging, Nconcat null yields null, NfalseGOexec sp_dboption NLogging, Ncursor close on commit, NfalseGOexec sp_dboption NLogging, Ndefault to local cursor, NfalseGOexec sp_dboption NLogging, Nquoted identifier, NfalseGOexec sp_dboption NLogging, NANSI warnings, NfalseGOexec sp_dboption NLogging, Nauto create statistics, NtrueGOexec sp_dboption NLogging, Nauto update statistics, NtrueGOuse[Logging]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOIFNOTEXISTS (SELECT*FROM dbo.sysobjects WHERE id OBJECT_ID(N[dbo].[Category]) ANDOBJECTPROPERTY(id, NIsUserTable) 1)BEGINCREATETABLE[dbo].[Category]([CategoryID][int]IDENTITY(1,1) NOTNULL,[CategoryName][nvarchar](64) NOTNULL,CONSTRAINT[PK_Categories]PRIMARYKEYCLUSTERED([CategoryID]ASC) ON[PRIMARY]) ON[PRIMARY]ENDGOSET ANSI_NULLS OFFGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOIFNOTEXISTS (SELECT*FROM dbo.sysobjects WHERE id OBJECT_ID(N[dbo].[CategoryLog]) ANDOBJECTPROPERTY(id, NIsUserTable) 1)BEGINCREATETABLE[dbo].[CategoryLog]([CategoryLogID][int]IDENTITY(1,1) NOTNULL,[CategoryID][int]NOTNULL,[LogID][int]NOTNULL,CONSTRAINT[PK_CategoryLog]PRIMARYKEYCLUSTERED([CategoryLogID]ASC) ON[PRIMARY]) ON[PRIMARY]ENDGOSET ANSI_NULLS OFFGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOIFNOTEXISTS (SELECT*FROM dbo.sysobjects WHERE id OBJECT_ID(N[dbo].[Log]) ANDOBJECTPROPERTY(id, NIsUserTable) 1)BEGINCREATETABLE[dbo].[Log]([LogID][int]IDENTITY(1,1) NOTNULL,[EventID][int]NULL,[Priority][int]NOTNULL,[Severity][nvarchar](32) NOTNULL,[Title][nvarchar](256) NOTNULL,[Timestamp][datetime]NOTNULL,[MachineName][nvarchar](32) NOTNULL,[AppDomainName][nvarchar](512) NOTNULL,[ProcessID][nvarchar](256) NOTNULL,[ProcessName][nvarchar](512) NOTNULL,[ThreadName][nvarchar](512) NULL,[Win32ThreadId][nvarchar](128) NULL,[Message][nvarchar](1500) NULL,[FormattedMessage][ntext]NULL,CONSTRAINT[PK_Log]PRIMARYKEYCLUSTERED([LogID]ASC) ON[PRIMARY]) ON[PRIMARY] TEXTIMAGE_ON [PRIMARY]ENDGOSET ANSI_NULLS OFFGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOIFNOTEXISTS (SELECT*FROM sysobjects WHERE id OBJECT_ID(N[dbo].[InsertCategoryLog]) AND type in (NP, NPC))BEGINEXEC dbo.sp_executesql statement NCREATE PROCEDURE InsertCategoryLog CategoryID INT, LogID INTASBEGIN SET NOCOUNT ON; DECLARE CatLogID INT SELECT CatLogID FROM CategoryLog WHERE CategoryIDCategoryID and LogID LogID IF CatLogID IS NULL BEGIN INSERT INTO CategoryLog (CategoryID, LogID) VALUES(CategoryID, LogID) RETURN IDENTITY END ELSE RETURN CatLogIDENDENDGOSET ANSI_NULLS OFFGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOIFNOTEXISTS (SELECT*FROM sysobjects WHERE id OBJECT_ID(N[dbo].[AddCategory]) AND type in (NP, NPC))BEGINEXEC dbo.sp_executesql statement NCREATE PROCEDURE [dbo].[AddCategory] -- Add the parameters for the function here CategoryName nvarchar(64), LogID intASBEGIN SET NOCOUNT ON; DECLARE CatID INT SELECT CatID CategoryID FROM Category WHERE CategoryName CategoryName IF CatID IS NULL BEGIN INSERT INTO Category (CategoryName) VALUES(CategoryName) SELECT CatID IDENTITY END EXEC InsertCategoryLog CatID, LogID RETURN CatIDENDENDGOSET ANSI_NULLS OFFGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOIFNOTEXISTS (SELECT*FROM sysobjects WHERE id OBJECT_ID(N[dbo].[ClearLogs]) AND type in (NP, NPC))BEGINEXEC dbo.sp_executesql statement NCREATE PROCEDURE ClearLogsASBEGIN SET NOCOUNT ON; DELETE FROM CategoryLog DELETE FROM [Log] DELETE FROM CategoryENDENDGOSET ANSI_NULLS OFFGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOIFNOTEXISTS (SELECT*FROM sysobjects WHERE id OBJECT_ID(N[dbo].[WriteLog]) AND type in (NP, NPC))BEGINEXEC dbo.sp_executesql statement N/****** Object: Stored Procedure dbo.WriteLog Script Date: 10/1/2004 3:16:36 PM ******/CREATE PROCEDURE [dbo].[WriteLog]( EventID int, Priority int, Severity nvarchar(32), Title nvarchar(256), Timestamp datetime, MachineName nvarchar(32), AppDomainName nvarchar(512), ProcessID nvarchar(256), ProcessName nvarchar(512), ThreadName nvarchar(512), Win32ThreadId nvarchar(128), Message nvarchar(1500), FormattedMessage ntext, LogId int OUTPUT)AS INSERT INTO [Log] ( EventID, Priority, Severity, Title, [Timestamp], MachineName, AppDomainName, ProcessID, ProcessName, ThreadName, Win32ThreadId, Message, FormattedMessage ) VALUES ( EventID, Priority, Severity, Title, Timestamp, MachineName, AppDomainName, ProcessID, ProcessName, ThreadName, Win32ThreadId, Message, FormattedMessage) SET LogID IDENTITY RETURN LogIDENDGOSET ANSI_NULLS OFFGOSET QUOTED_IDENTIFIER OFFGOIFNOTEXISTS (SELECT*FROM sysobjects WHERE id OBJECT_ID(NFK_CategoryLog_Category) AND parent_obj OBJECT_ID(N[dbo].[CategoryLog]))ALTERTABLE[dbo].[CategoryLog]WITHCHECKADDCONSTRAINT[FK_CategoryLog_Category]FOREIGNKEY( [CategoryID])REFERENCES[dbo].[Category] ( [CategoryID])GOIFNOTEXISTS (SELECT*FROM sysobjects WHERE id OBJECT_ID(NFK_CategoryLog_Log) AND parent_obj OBJECT_ID(N[dbo].[CategoryLog]))ALTERTABLE[dbo].[CategoryLog]WITHCHECKADDCONSTRAINT[FK_CategoryLog_Log]FOREIGNKEY( [LogID])REFERENCES[dbo].[Log] ( [LogID])GOSET QUOTED_IDENTIFIER ONSET ARITHABORT ONSET CONCAT_NULL_YIELDS_NULL ONSET ANSI_NULLS ONSET ANSI_PADDING ONSET ANSI_WARNINGS ONSET NUMERIC_ROUNDABORT OFFgoDECLAREbErrorsasbitBEGINTRANSACTIONSETbErrors0CREATENONCLUSTEREDINDEX[ixCategoryLog]ON[dbo].[CategoryLog] ([LogID]ASC, [CategoryID]ASC )IF( error0 ) SETbErrors1IF( bErrors0 )COMMITTRANSACTIONELSEROLLBACKTRANSACTION 2. 点击Logging Target Listeners 区块右上角的加号按钮, Add Logging Target Listeners然后点击 Add Database Listeners ,属性设置如下: 3. File—Save,保存App.config,无需改动VS中的程序直接再次运行,运行结果如下: 4. 查看Logging数据库,可以看到刚刚写入的日志: SELECT*FROM[Logging].[dbo].[Category]GOSELECT*FROM[Logging].[dbo].[Log]GO 三. 向XML文件写入日记 1. 创建一个XML文件,我建在上面创建好的工程目录下,命名为test.xml,点击Logging Target Listeners 区块右上角的加号按钮, Add Logging Target Listeners然后点击 Add XML Listeners ,属性设置如下: 2. File—Save,保存App.config,无需改动VS中的程序直接再次运行,运行结果如下: 3. 打开test.xml文件,内容如图所示: 哈哈.好了,今天的教程就做到这里,吃午餐~睡觉~下午上课去(最讨厌学校的实验课了)~ 请输