1.创建表格

2.创建log4net.xml,并设置属性始终复制,关键属性

 <bufferSize value="1" />
 <conversionPattern value="%property{usernm}" />

|DataDirectory| 如果是winform,在项目下加个文件夹App_Data然后将access数据库放进去。
在程序运行开始加上这个方法:
 string p = AppDomain.CurrentDomain.BaseDirectory;
if (p.IndexOf("\\bin\\") > )
{
if (p.EndsWith("\\bin\\Debug\\"))
p = p.Replace("\\bin\\Debug", "");
if (p.EndsWith("\\bin\\Release\\"))
p = p.Replace("\\bin\\Release", "");
}
if (!p.EndsWith("App_Data\\"))
p = p + "App_Data\\";
AppDomain.CurrentDomain.SetData("DataDirectory", p);
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<!--站点日志配置部分-->
<log4net>
<root>
<!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
<!--如果没有定义LEVEL的值,则缺省为DEBUG-->
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionString value=" Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\site.accdb;Persist Security Info=False;" />
<commandText value="INSERT INTO tbLog ([Date],[Thread],[Level],[Logger],[Message],[usernm]) VALUES (@log_date, @thread, @log_level, @logger, @message,@usernm)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date" />
</layout>
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="1024" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@usernm" />
<dbType value="String" />
<size value="1024" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{usernm}" />
</layout>
</parameter>
</appender>
<logger name="FCore" additivity="true">
<appender-ref ref="AdoNetAppender_Access" />
<level value="ALL" />
</logger>
</log4net>
</configuration>

3.创建log4net帮助

  class LogHelper
{
/// <summary>
/// lock对象
/// </summary>
private static object lockLog = new object(); static string _logpath;
private static string LogPath
{
get
{
if (_logpath == null)
_logpath = AppDomain.CurrentDomain.BaseDirectory + "\\Log4net.xml";
return _logpath;
}
}
private static ILog _log;
/// <summary>
/// 记录Log信息
/// </summary>
public static ILog ToLog
{
get
{
if (_log == null)
{
lock (lockLog)
{
System.IO.FileInfo file = new System.IO.FileInfo(LogPath);
log4net.Config.XmlConfigurator.ConfigureAndWatch(file);
//log4net.Config.XmlConfigurator.Configure(file);
_log = log4net.LogManager.GetLogger("FCore");
GlobalContext.Properties["usernm"] = "用户名";
}
}
return _log;
}
}
} /// <summary>
/// Log对外执行文件
/// </summary>
public class Log
{
/// <summary>
/// 记录Error日志
/// </summary>
/// <param name="msg"></param>
public static void Error(string msg)
{
LogHelper.ToLog.Error(msg);
}
/// <summary>
/// 记录Warn日志
/// </summary>
/// <param name="msg"></param>
public static void Warn(string msg)
{
LogHelper.ToLog.Warn(msg);
}
/// <summary>
/// 记录Info日志
/// </summary>
/// <param name="msg"></param>
public static void Info(string msg)
{
LogHelper.ToLog.Info(msg);
}
/// <summary>
/// 记录Debug日志
/// </summary>
/// <param name="msg"></param>
public static void Debug(string msg)
{
LogHelper.ToLog.Debug(msg);
}
}

4.调用

 Log.Info(MethodBase.GetCurrentMethod().DeclaringType.ToString() + ":" + GetMethodName());

  public static string GetMethodName()
{
var method = new StackFrame().GetMethod(); // 这里忽略1层堆栈,也就忽略了当前方法GetMethodName,这样拿到的就正好是外部调用GetMethodName的方法信息
var property = (
from p in method.DeclaringType.GetProperties(
BindingFlags.Instance |
BindingFlags.Static |
BindingFlags.Public |
BindingFlags.NonPublic)
where p.GetGetMethod(true) == method || p.GetSetMethod(true) == method
select p).FirstOrDefault();
return property == null ? method.Name : property.Name;
}

另一种写入本地

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<!--站点日志配置部分-->
<log4net>
<root>
<!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
<!--如果没有定义LEVEL的值,则缺省为DEBUG-->
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="DateAppender" type="log4net.Appender.RollingFileAppender">
<bufferSize value="100" />
<file value="C:\log\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<datePattern value="yyyyMMdd&quot;.log&quot;" />
<!--<param name="StaticLogFileName" value="false"/>-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="时间:%date/线程:[%thread]/level:%-5level/logger:%logger/property:[%property{NDC}]/method:%method/毫秒:%r/信息:%message%newline" />
</layout>
</appender>
<logger name="FCore" additivity="true">
<appender-ref ref="DateAppender" />
<level value="INFO" />
</logger>
</log4net>
</configuration>

log4net插入access自定义字段的更多相关文章

  1. Log4net 使用之 自定义字段

    Log4net 是.Net下一个非常优秀的开源日志记录组件.Log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介. 由于业务需要,计划为日志增加2个字段,除了 ...

  2. WordPress发布文章/页面时自动添加默认的自定义字段

    如果你每篇文章或页面都需要插入同一个自定义字段和值,可以考虑在WordPress发布文章/页面时,自动添加默认的自定义字段.将下面的代码添加到当前主题的 functions.php 即可: 1 2 3 ...

  3. log4net自定义字段写入SqlServer数据库 ASP.net

    首先申明,本示例经过本作者亲自试验通过,可以运行 第一步 编写log4net配置文件 此处为Log.xml,该文件放在与Web.config平级的位置 <?xml version="1 ...

  4. Log4net 自定义字段到数据库(二)

    这种方法比第一种方法麻烦些 Log4Net.config <?xml version="1.0" encoding="utf-8" ?> <c ...

  5. log4net记录日志到数据库自定义字段

    假设数据库中有如下自定义字段:   1.根据自定义字段定义日志信息对象     public class MessageLog     {           /// <summary> ...

  6. Log4net 自定义字段到数据库

    今天要求做个log4net自定义字段到数据库,在网上找了好多例子,都运行不成功.最后找了个国外的,很简单的就解决了. log4net它已经定义的字段有 <commandText value=&q ...

  7. Log4net 自定义字段 写入Oracle 使用ODP.NET Managed驱动

    一.环境说明: 开发工具:vs2010   ,数据库:oracle 11g ,版本:log4net的目前最新版本1.2.13.0    :  Oracle.ManagedDataAccess.dll ...

  8. Java自定义表单、自定义字段

    最近想实现用户自定义数据库中的字段,我想大部分人第一想到的就是EAV(Entity-Attribute-Value),这种方式对于写一个小的毕业设计应该还可以使用,当然也有很多CMS系统采用这种方式, ...

  9. Filebeat Nginx Module 自定义字段

    Filebeat Nginx Module 自定义字段 一.修改/usr/local/nginx/conf/nginx.conf中 log_format access '$remote_addr - ...

随机推荐

  1. javascript相框echarts插件实现酷立方效果图的人

    最近由于项目需求,我们需要做的一类似网络效应的人立方效果,很多文件中的查询之后.百度发现echarts开源组件非常适合,而加载速度是伟大的.echarts图形主要使用html5这些新功能做,使用can ...

  2. CodeForces Round#229 DIV2 C 递归DP

    这条路是只说哦话题,没有注意到k只有最大射程10,所以昨天晚上,一个很长的纠结.没有好的办法来处理,后来不情愿地去寻找解决问题的办法,研究发现,人们对开始到句子,由于k的范围比较小 所以....... ...

  3. 如若已在管理后台更新域名配置,请刷新项目配置后重新编译项目,操作路径:“项目-域名信息” http://www.mysite.com 不在以下 request 合法域名列表中

    报错如图 报错文字如下: 如若已在管理后台更新域名配置,请刷新项目配置后重新编译项目,操作路径:“项目-域名信息” http://www.mysite.net 不在以下 request 合法域名列表中 ...

  4. WPF 画线动画效果实现

    原文:WPF 画线动画效果实现 弄了将近三天才搞定的,真是艰辛的实现. 看了很多博客,都太高深了,而且想要实现的功能都太强大了,结果基础部分一直实现不了,郁闷啊~ 千辛万苦终于找到了一个Demo,打开 ...

  5. flash导出正常清晰(无色差)GIF图片

    前言: 这枚GIF算是半临摹作品.我使用的FLASH制作这个小动画,其实这类型的动画用AE做会更便捷. 进入主题前,先摆出个成品 教程结束,以上就是flash制作出来的小动画怎么导出正常清晰(无色差) ...

  6. 关于 Facebook 的 React 专利许可证

    本文转载自:酷 壳 – CoolShell 作者:陈皓 随着 Apache.百度.Wordpress 都在和 Facebook 的 React.js 以及其专利许可证划清界限,似乎大家又在讨论 Fac ...

  7. 【从翻译mos文章】在oracle db 11gR2版本号被启用 Oracle NUMA 支持

    在oracle db 11gR2版本号被启用 Oracle NUMA 支持 参考原始: Enable Oracle NUMA support with Oracle Server Version 11 ...

  8. 首个 C++ 编译器诞生 30 周年了,来听听 C++ 之父畅谈 C++

    原文  http://www.iteye.com/news/31076   C++ 之父 Bjarne Stroustrup 在 cfront 诞生 30 周年的访谈. 整整30年前,CFront 1 ...

  9. Bootstrap 缩略图 警告框

    @{    Layout = null;}<!DOCTYPE html><html><head>    <meta name="viewport&q ...

  10. MYSQL 定时自动执行EVENT

    MySQL从5.1开始支持EVENT功能,类似Oracle和MSSQL的定时任务job功能.有了这个功能之后我们就可以让MySQL自动的执行存储过程来实现数据汇总等功能了,不用像以前哪样手动操作完成了 ...