log4net 添加自定义日志到数据库
添加操作日志到数据库举例:
(一)建立数据库的操作日志表,如下我建立了一个简单的日志表
(二)配置文件中的配置如下
<log4net>
<!--错误日志记录数据库-->
<logger name="OperateDB">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender_OperToSql" />
</logger>
<!--操作日志记录到数据库-->
<appender name="AdoNetAppender_OperToSql" type="log4net.Appender.AdoNetAppender">
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=192.168.1.188\MSSQLSERVER2008;database=HotelMIS;uid=sa;pwd=123456;" />
<commandText value="insert into OperateLog(LogLevel, Msg, ClassName, Method, Cby, Cdt)values(@LogLevel, @Msg, @ClassName, @Method, @Cby, @Cdt)" />
<bufferSize value="1" /> <parameter>
<parameterName value="@LogLevel" />
<dbType value="String" />
<size value="64" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</parameter> <parameter>
<parameterName value="@Msg" />
<dbType value="String" />
<size value="10240" />
<layout type="Util.MyLogLayout, Util">
<conversionPattern value="%property{Msg}" />
</layout>
</parameter> <parameter>
<parameterName value="@ClassName" />
<dbType value="String" />
<size value="256" />
<layout type="Util.MyLogLayout, Util" >
<param name="ConversionPattern" value="%property{ClassName}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@Method" />
<dbType value="String" />
<size value="256" />
<layout type="Util.MyLogLayout, Util" >
<param name="ConversionPattern" value="%property{Method}"/>
</layout>
</parameter> <parameter>
<parameterName value="@Cby" />
<dbType value="String" />
<size value="128" />
<layout type="Util.MyLogLayout, Util" >
<param name="ConversionPattern" value="%property{Cby}"/>
</layout>
</parameter> <parameter>
<parameterName value="@Cdt" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
</appender> </log4net>
(三)定义自己的 Layout 布局类 和 MyMessagePatternConverter类
namespace Util
{
public class MyLogLayout : PatternLayout
{
public MyLogLayout()
{
this.AddConverter("property", typeof(MyMessagePatternConverter));
} }
}
namespace Util
{
public class MyMessagePatternConverter : 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());
}
}
/// <summary>
/// 通过反射获取传入的日志对象的某个属性的值
/// </summary>
/// <param name="property"></param>
/// <returns></returns>
private object LookupProperty(string property, log4net.Core.LoggingEvent loggingEvent)
{
object propertyValue = string.Empty;
PropertyInfo propertyInfo = loggingEvent.MessageObject.GetType().GetProperty(property);
if (propertyInfo != null)
propertyValue = propertyInfo.GetValue(loggingEvent.MessageObject, null);
return propertyValue;
}
}
}
(四)最后可以调用了,我这里写了一个公共的类Log
[assembly: log4net.Config.XmlConfigurator(Watch = false)]
namespace Util
{
public class Log
{
#region 记录操作日志到数据库
/// <summary>
/// 记录操作日志到数据库
/// </summary>
/// <param name="user"></param>
/// <param name="msg"></param>
/// <param name="className"></param>
/// <param name="method"></param>
public static void OperateDB(string user, string msg, string className, string method)
{
ILog logger = LogManager.GetLogger("OperateDB");
logger.Info(new LogContent() { Msg = msg, Cby = user, ClassName = className, Method = method });//将异常信息写到磁盘上.
} /// <summary>
/// 记录操作日志到数据库
/// </summary>
/// <param name="user"></param>
/// <param name="msg"></param>
public static void OperateDB(string user, string msg)
{
ILog logger = LogManager.GetLogger("OperateDB");
logger.Info(new LogContent() { Msg = msg, Cby = user, ClassName = null, Method = null });//将异常信息写到磁盘上.
}
#endregion } }
log4net 添加自定义日志到数据库的更多相关文章
- log4net 将日志写入数据库
asp.net利用log4net写入日志到SqlServer数据库,Log4net是一个开源的错误日志记录项目,易用性强,源自log4j,品质值得信赖. 下面就我的安装部署log4net到MS sql ...
- log4net:保存日志到数据库
1:下载log4net http://logging.apache.org/log4net/download_log4net.cgi 2:引用到项目 下载以后,在项目中引用log4net.dll 3: ...
- mvc log4net将日志写入数据库失败解决之道——开启内部调试
项目信息:spring mvc5 EF6 数据库:sql2008r2 log4net版本:1.2.10.0 第一天: 1.思路一:配了半天,一直无法写入数据库,网上搜了一大堆的资料,都没能解决,怀疑 ...
- .net core 中使用Log4net输出日志到Mysql数据库中
.net core 中使用Log4net输出日志到数据库中去 1.使用Nuget安装log4net 和 mysql.data 2.设置log4net 的配置文件 log4net.config 可以设置 ...
- 关于使用Log4Net将日志插入oracle数据库中
1.关于配置文件. <?xml version="1.0" encoding="utf-8" ?> <configuration> &l ...
- Log4Net的应用教程之保存日志到数据库中
关于Log4Net的应用,网上有很多教程,但大多数都是拷贝复制,有些按照他的代码来,运行起来发现也出不来效果,但是Log4net的作用实在是非常大的,或者这里说的不对,应该说系统的日志功能是很重要的也 ...
- c#用log4Net将日志写入到Oracle数据库,并写入到文件中
原文:c#用log4Net将日志写入到Oracle数据库,并写入到文件中 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...
- Log4Net异常日志记录在asp.net mvc3.0的应用
前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...
- ELK+FileBeat+Log4Net搭建日志系统
ELK+FileBeat+Log4Net搭建日志系统 来源:https://www.zybuluo.com/muyanfeixiang/note/608470 标签(空格分隔): ELK Log4Ne ...
随机推荐
- How Kafka’s Storage Internals Work
In this post I'm going to help you understand how Kafka stores its data. I've found understanding th ...
- 软件开发中的完整测试所包括的环节UT、IT、ST、UAT
软件开发中的完成测试环境所包括的环节包括:UT.IT.ST.UAT UT = Unit Test 单元测试 IT = System Integration Test 集成测试ST = System T ...
- MIT 6.828 JOS学习笔记1. Lab 1 Part 1: PC Bootstrap
Lab 1: Booting a PC Part 1: PC Bootstrap 介绍这一部分知识的目的就是让你能够更加熟悉x86汇编语言,以及PC启动的整个过程,而且也会首次学习使用QEMU软件来仿 ...
- nginx日志中文变成类型\xE9\xA6\x96\xE9\xA1\xB5-\xE6\x8E\xA8\xE8\x8D\x90的东西
感谢 http://my.oschina.net/leejun2005/blog/106791 代码如下: public class App { public static String str2He ...
- HTTP基础10--web(2)
因输出值转义不完全引发的安全漏洞 实施 Web 应用的安全对策可大致分为以下两部分. 客户端的验证 Web 应用端(服务器端)的验证: 输入值验证 / 输出值转义 客户端允许篡改数据或关闭 JavaS ...
- Swift3.0语言教程使用字符串创建和初始化字符串
Swift3.0语言教程使用字符串创建和初始化字符串 Swift3.0语言教程使用字符串创建和初始化字符串,在编程语言中,字面值是很常见的数据描述形式.人们可以通过字面所表达的意思,获知其含义,尤其是 ...
- Appium Java Windows环境搭建篇
1. 安卓SDK及配置环境变量 1.1.先下载sdk安装包:installer_r24.4.1-windows.exe 下载地址:链接: http://pan.baidu.com/s/1dEyPSa9 ...
- 10324 Global Warming dfs + 二分
时间限制:1000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC Description Global warming is a big prob ...
- wpf获取模板化控件中的动画。
直接在在模版中用blend添加动画,默认会放在ControlTemplate 的 Resources下面,使用了多种方法都无法正确获取Storyboard.. <ControlTemplate ...
- js实现冒泡排序
冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到 ...