在我上一篇文章中,简单的记录了将NLog日志的信息保存在文件中,不过很多时候,一些重要的Error信息,我们可能更希望保存在数据库中。所以我继续按照这个思路,完善了下上次的Demo。
首先要在数据库中新建一个表,用来保存NLog信息,建表语句如下:
USE [TestDB]GO/****** Object: Table [dbo].[Loginfoes] Script Date: 12/20/2012 11:47:59 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Loginfoes]( [LogId] [int] IDENTITY(1,1) NOT NULL, [CreateOn] [datetime] NOT NULL, [Origin] [nvarchar](max) NULL, [LogLevel] [nvarchar](50) NULL, [Message] [nvarchar](max) NULL, [Exception] [nvarchar](max) NULL, [StackTrace] [nvarchar](max) NULL) ON [PRIMARY]GO数据库名为TestDB
然后,我们就要在targets中添加如下的target标签:
其中,简单介绍下connectionString是连接数据库的语句,这个我相信搞过web或者winforms开发的同学都不陌生,commandText标签中是操作数据的sql语句,parameter标签则是参数选项。insert into Loginfoes([CreateOn],[Origin],[LogLevel], [Message], [Exception],[StackTrace]) values (getdate(), @origin, @logLevel, @message,@exception, @stackTrace);
OK,接下来我们要在rules标签中添加一个logger,代码如下:
这样儿,只要是Debug级别以上的信息,都会被记录到数据库中,当然,也可以根据个人需要,只记录Fatal Error,其他的一般记录保存在文本文件里。
接下来,就是我们的main方法的方法体了,很简单的一句代码,如下所示:
logger.Fatal("Fatal Error!");执行程序,然后我们去数据库中查询下结果,如下图所示:
这样儿,一个简单的NLog日志保存到数据库中的Demo就完成了,如果大家还有更多的需求,请查阅NLog官网的相关文档。