使用独立的log4net.config文件配置log4net,将日志记录到Mysql数据库【原创】
开发环境:
VS2013,
Asp.Net MVC 4.0,
.Net Framework 4.0,
Log4net 1.2.13.0,
Mysql.Data.dll,6.8.3.0
设置步骤:
1.在站点根目录下,创建一个log4net.config的XML文件。(文件名称可以任意,我们这里叫做log4net.config)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="AdoNetAppender" />
    <!--<appender-ref ref="RollingFile" />-->
    <!--<appender-ref ref="RollingLogFileAppender" />-->
  </root>
  <appender name="Console" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <!-- Pattern to output the caller's file name and line number -->
      <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
    </layout>
  </appender>
    <!-- 日志文件部分log输出格式的设定 -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\Log_" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd'.txt'" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <header value="------------------------------------------------------------" />
        <ConversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
      </layout>
    </appender>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="example.log" />
    <appendToFile value="true" />
    <maximumFileSize value="100KB" />
    <maxSizeRollBackups value="2" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%level %thread %logger - %message%newline" />
    </layout>
  </appender>
  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <bufferSize value="1" />    
    <connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data,Version=6.8.3.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d" />
    <connectionString value="server=127.0.0.1;database=log4net_db;Uid=root;Pwd=123;" />
    <commandText value="INSERT INTO log4net(`Date`,`Thread`,`Level`,`Logger`,`Message`,`Exception`) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
    <parameter>
      <parameterName value="@log_date" />
      <dbType value="DateTime" />
      <layout type="log4net.Layout.RawTimeStampLayout" />
    </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="4000" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@exception" />
      <dbType value="String" />
      <size value="2000" />
      <layout type="log4net.Layout.ExceptionLayout" />
    </parameter>
  </appender>
</log4net>
</configuration>
2.项目可视化下,Properties/AssemblyInfo.cs中添加:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
3.global.asax.cs文件中执行:
protected void Application_Start()
        {
//独立的log4net.config
            log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.config"));
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
4.调用写日志方法:
ILog logger = LogManager.GetLogger(typeof(AlbumServcie));
logger.ErrorFormat("GetAlbumModel IsIISCache={0} throw Exception={1}", IsIISCache, ex.Message);
注意:
在log4net。config中,删除:
<configSections>    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><configSections>    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>  </configSections>参考:
1.http://www.cnblogs.com/mahope/archive/2006/04/14/375221.html
2.http://logging.apache.org/log4net/release/config-examples.html
3.http://blog.csdn.net/zhoufoxcn/article/details/2220533
使用独立的log4net.config文件配置log4net,将日志记录到Mysql数据库【原创】的更多相关文章
- 使用log4net无法将日志记录插入mysql数据库解决办法
		写在前面 今天没事研究了下,将日志文件写入mysql数据库,因为新公司用的数据库也是mysql,项目中需要将日志信息写入数据库,没办法,就研究了下.在使用过程中遇到一个很蛋疼的问题.最后解决了,郁闷了 ... 
- c#Winform程序调用app.config文件配置数据库连接字符串  SQL Server文章目录   浅谈SQL Server中统计对于查询的影响   有关索引的DMV  SQL Server中的执行引擎入门 【译】表变量和临时表的比较  对于表列数据类型选择的一点思考  SQL Server复制入门(一)----复制简介  操作系统中的进程与线程
		c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ... 
- SSH自动登录config文件配置
		title: SSH自动登录config文件配置 comments: false date: 2019-08-19 19:29:13 description: 更方便的 ssh 操作??? categ ... 
- 附带详细注释的log4net的app.config文件配置例子
		<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ... 
- C# app.config文件配置和修改
		很多时候我们需要对系统的.config文件进度读写操作,例如:系统初始化的参数的更改.系统参数的改变都需要更新到配置文件. 首先我们有必要了解一下app.config.exe.config和vshos ... 
- 跨域Ajax请求 web.config文件配置
		在web.config文件的<system.webServer>节点下面添加如下配置代码:<!--允许跨域ajax访问--> <httpProtocol> < ... 
- Web.Config文件配置之限制上传文件大小和时间
		在邮件发送系统或者其他一些传送文件的网站中,用户传送文件的大小是有限制的,因为这样不但可以节省服务器的空间,还可以提高传送文件的速度.下面介绍如何在Web.Config文件中配置限制上传文件大小与时间 ... 
- 通过config文件配置动态导入模块
		需求: 固定的服务中要调用不同的算法,当前服务中实现的动态导入是通过在config配置中加上参数:proto="AiProto(1,4)",在服务中from pathname im ... 
- winform 应用log4net做日志记录到mysql
		1.nuget装log4net 2.nuget控件台装 mysql.data Install-Package mysql.data -version 6.8.3 (太高的版本用不了,切记) 3.修改a ... 
随机推荐
- shiro 会话管理
- vuejs  组件通讯
			在应用复杂时,推荐使用vue官网推荐的vuex,以下讨论简单SPA(single-page application 简称为 SPA)中的组件间传值. 一.路由传值 路由对象如下图所示: 在跳转页面的时 ... 
- 3D  模型
			http://www.imooc.com/article/12670 
- com.google.gson.stream.MalformedJsonException
			今天下午项目更新后,调用接口时,提示“请求失败”,发现项目网络框架解析时,报错如下:com.google.gson.stream.MalformedJsonException: Unterminate ... 
- redis 存储java对象 两种方式
			根据redis的存储原理,Redis的key和value都支持二进制安全的字符串 1.利用序列化和反序列化的方式存储java对象我们可以通过对象的序列化与反序列化完成存储于取出,这样就可以使用redi ... 
- jps,jstack
			当java程序发生死循环的时候可以结合使用这两个命令查看死循环发生的位置. 
- python 内置函数(一),低阶内置函数功能汇总
			python 内置函数 68个 今日主要内容: 1.内置函数 一.内置函数 1.内置函数 详细细节内容地址(id):https://mubu.com/edit/odv-2Dkb6j 
- Redis集群部署及命令
			一.简介 redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用.可扩展等问题. redis集群提供了以下两个好处: 将数据自动切分(split) ... 
- H5 边框:带border的百分比布局
			响应式Web设计经常需要我们通过百分比设置组件宽度.如果我们不考虑边框,那么很容易就可以实现,但如果你给每一列以及总宽度都采用百分比设置,那这个时候固定的边框大小就会出来捣乱.下面我们将看到一组方法去 ... 
- openstack 相关服务常用命令整理
			1. 数据库: # systemctl start mysqld # systemctl enable mysqld # systemctl status mysqld #mysql> show ... 
