开源框架 - 日志记录Log4Net(二)
2021-03-13 14:27
标签:you object word 代码 spl dbf OLE done alt 众所周知,大多数情况下,业务需要记录的并不是简单的系统时间%date,级别%level,信息%message等字段,而是需要自定义的业务字段。以便后续的数据挖掘和钻取。 逐步研究发现Log4Net记录日志的info,error,debug等方法可以传入object参数:log.info(object message)。 下面记录一下,传一个自定义的业务日志对象给info方法,它自动帮我得到该业务对象的字段的值,然后再写入到数据库后台。 1、建立数据库和数据表 2、创建解决方案 3、核心代码 注意:我这里执行了三次。 注意: 项目除了添加Log4Net.dll引用外还需要添加System.Data.dll引用。 参考资料:https://www.cnblogs.com/Arlen/archive/2008/11/22/1338908.html 开源框架 - 日志记录Log4Net(二) 标签:you object word 代码 spl dbf OLE done alt 原文地址:https://www.cnblogs.com/jeremywucnblog/p/12819964.html序言
解决方案
USE [Test]
GO
/****** Object: Table [dbo].[SysLogs] Script Date: 2020-05-02 22:07:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SysLogs](
[ID] [int] IDENTITY(1,1) NOT NULL,
[LogDate] [datetime] NULL,
[Msg] [nvarchar](max) NULL,
[UserName] [nvarchar](200) NULL,
[ThreadName] [nvarchar](200) NULL,
[Level] [nvarchar](200) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Log4NetDBDemo
{
class Program
{
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
Console.WriteLine("开始写日志_" + DateTime.Now.ToLongDateString());
log.Info(new LogContent
{
Msg = "测试Log4Net日志存入数据库",
ThreadName = "控制台测试模块",
UserName = "sysman"
});
Console.WriteLine("日志写入成功_" + DateTime.Now.ToLongDateString());
Console.ReadKey();
}
}
}
using log4net.Layout.Pattern;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Log4NetDBDemo
{
public class MyMsgPatternConverter : PatternLayoutConverter
{
protected override void Convert(System.IO.TextWriter writer, log4net.Core.LoggingEvent loggingEvent)
{
if (Option != null)
{
// Write the value for the specified key
WriteObject(writer, loggingEvent.Repository, LookupProperty(Option, loggingEvent));
}
else
{
// Write all the key value pairs
WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());
}
}
///
using log4net.Layout;
using log4net.Layout.Pattern;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Log4NetDBDemo
{
///
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Log4NetDBDemo
{
///
"1.0" encoding="utf-8" ?>
运行结果
文章标题:开源框架 - 日志记录Log4Net(二)
文章链接:http://soscw.com/index.php/essay/64144.html