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 ...
随机推荐
- 用Access作为后台数据库支撑。
/// <summary> /// 读取Excel文档 /// </summary> /// <param name="Path">文件名称&l ...
- 动态平衡二叉搜索树的简易实现,Treap 树
http://blog.csdn.net/qichi_bj/article/details/8232048
- LoadRunner检查点学习实例
LoadRunner只会检测脚本中事务的执行状态,而实际的事务执行结果则需要通过检查点来完成. 例如一个登录事务,LR只关心事务本身的执行状态,也就是说哪怕实际操作密码错误产生登录失败的业务操作,其事 ...
- Linux常用命令之安装VMware10中安装CentOS 6.4
笔者用过的Linux系统也就是现在主流的企业级linu系统RedHat跟CentOS,这边主要介绍下CentOS 6.4的安装 RedHat和CentOS差别不大,CentOS是一个基于RedHat ...
- Liferay 6.2 改造系列之二十三:修改Liferay原始主题中"技术支持:Liferay"字样
1.修改主题模板文件,具体位置如下 (1) portal-master\portal-web\docroot\html\themes\_unstyled\templates\portal_normal ...
- Memcached集群代理软件magent安装小结
magent是一个memcached代理软件(memcached agent),又叫memagent. (magent is a simple but useful proxy program for ...
- hdu3535 背包大杂汇
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3535 //不想写题解,这道题让我对背包的理解更深了,我相信我不会忘记的.... 代码: # ...
- 《DSP using MATLAB》示例Example4.2
- Swift3.0语言教程获取字符串编码与哈希地址
Swift3.0语言教程获取字符串编码与哈希地址 Swift3.0语言教程获取字符串编码与哈希地址,以下将讲解字符串中其它内容的获取方法. 1.获取字符串编码 在NSString中可以使用2个属性获取 ...
- BZOJ 3932 [CQOI2015]任务查询系统 ——可持久化线段树
[题目分析] 主席树,维护区间大小以及权值之和. 但是细节确实要琢磨很久,WA了几次. [代码] #include <cstdio> #include <cstring> #i ...