log4net写入mysql,.net 使用Log4net 输出日志到数据库

写入数据库中第一步需要修改配置文件:

对于自定义消息类型

需要定义:

public class CustomPatternLayout : PatternLayout {

public CustomPatternLayout() {

// 添加自定义属性转换

this.AddConverter("property", typeof(CustomPatternLayoutConverter));

}

}

CustomPatternLayoutConverter:

public class CustomPatternLayoutConverter : PatternLayoutConverter {

/// 

/// 重写转换方法

/// 

/// 

/// 

protected override void Convert(System.IO.TextWriter writer, log4net.Core.LoggingEvent loggingEvent) {

if (null != this.Option) {

WriteObject(writer, loggingEvent.Repository, LookupProperty(this.Option, loggingEvent));

} else {

WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());

}

}

private object LookupProperty(string property, LoggingEvent loggingEvent) {

object propertyValue = string.Empty;

PropertyInfo info = loggingEvent.MessageObject.GetType().GetProperty(property);

if (null != info)

propertyValue = info.GetValue(loggingEvent.MessageObject, null);

return propertyValue;

}

}

数据库:

create table Log(

[nId] [bigint] IDENTITY(1,1) NOT NULL,

[dtDate] [datetime] NOT NULL,

[sThread] [nvarchar](100) NOT NULL,

[sLevel] [nvarchar](200) NOT NULL,

[sLogger] [nvarchar](500) NOT NULL,

[sMessage] [nvarchar](3000) NULL,

[sUserName] [nvarchar] (50) NULL,

[sException] [nvarchar](4000) NULL

)

test:

static void Main(string[] args) {

ILog log = null;

try {

log4net.Config.XmlConfigurator.Configure(new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config"));

log = LogManager.GetLogger("test");

log.Info(new CustomLogMessage() {

UserName = "Mr.k",

Message = "custom msg",

});

throw new Exception("异常啦!!");

} catch (Exception error) {

Console.WriteLine(error);

log.Error(new CustomLogMessage() {

UserName = "Mr.k",

Message = "err msg",

}, error);

}

Console.ReadKey();

}

查看数据库结果:

f242d034231852cb9d1c98e115cac1a2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值