• Log4Net记录到数据库


    WinForm下Log4Net的配置

    Log4Net 组件下载地址

    https://download.csdn.net/download/zgx123zgx123zg/10470986

    configSections节点下添加

        <!--Log4Net配置-->
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

    configuration节点下添加

    <log4net>
        <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
          <bufferSize value="1" />
          <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <connectionString value="Data Source=.;Initial Catalog=Test;Integrated Security=True;Connect Timeout=15;" />
          <commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) 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="100" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%t" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@log_level" />
            <dbType value="String" />
            <size value="200" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%p" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@logger" />
            <dbType value="String" />
            <size value="500" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%logger" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@message" />
            <dbType value="String" />
            <size value="3000" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%m" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@exception" />
            <dbType value="String" />
            <size value="4000" />
            <layout type="log4net.Layout.ExceptionLayout" />
          </parameter>
        </appender>
        <!-- setup the root category, add the appenders and set the default level -->
        <root>
          <level value="WARN"/>
          <level value="INFO"/>
          <level value="DEBUG"/>
          <level value="FINE"/>
          <appender-ref ref="ADONetAppender" />
        </root>
        <!-- specify the level for some specific categories -->
        <logger name="iNotes">
          <level value="WARN"/>
          <level value="INFO"/>
          <level value="DEBUG"/>
          <level value="FINE"/>
          <appender-ref ref="ADONetAppender"/>
        </logger>
        <logger name="StellaLogger">
          <level value="ALL"/>
          <appender-ref ref="AdoNetAppender" />
        </logger>
      </log4net>

    AssemblyInfo.cs文件下添加

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]

    添加一个按钮点击事件里加入

             log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                myLogger.Warn("这是一个警告日志");
                myLogger.Info("单击了按钮");
                myLogger.Debug("用Log4Net写入数据库日志");
                myLogger.Error("这是一个错误日志");
                myLogger.Fatal("这是一个致命的错误日志");
                try
                {
                    ILog logger = LogManager.GetLogger("LogRecord");
                    logger.Debug("用Log4Net写入数据库日志");
                    int x = 5;
                    int y = 0;
                    throw new Exception("测试错误");
                }
                catch (Exception ex)
                {
                    myLogger.Error(ex.Message);
                }
                finally
                {
                    label1.Text = DateTime.Now.ToLongTimeString() + ":操作日志已记录完成";
                }

    转载自http://www.cnblogs.com/wolf-sun/p/3347373.html#3009010

  • 相关阅读:
    redis限流器的设计
    使用HystrixCommand封装http请求
    自定义的最简单的可回调的线程任务CallbackableFeatureTask(模仿google的ListenableFutureTask)
    通用的规则匹配算法(原创)(java+.net)
    redis缓存切面实现(支持缓存key的spel表达式)
    使用join和CountDownLatch来等待线程结束
    shell日常实战练习——通过监视用户登陆找到入侵者
    Nginx web服务器
    nginx——防盗链功能
    nginx 隐藏nginx版本号
  • 原文地址:https://www.cnblogs.com/RambleLife/p/9165248.html
Copyright © 2020-2023  润新知