<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Log4net自定義配置說明及排錯方法

      1、日志記錄到數據庫時,如對應日志表無日志,可通過如下方式排查:

             A、檢查數據庫的連接事件日志,如無任何事件,則表明數據庫連接失敗,這時需要排查log4net.config的配置;如有事件,則將對應Insert Sql直接在數據庫內執行,排查對應SQL錯誤即可。

             B、在AspnetCore中使用時Microsoft.Extensions.Logging.Log4Net.AspNetCore包時,如SQL Server的連接驅動設置為 System.Data.SqlClient時,會數據庫連接失敗,且系統捕獲不到異常。需要必須使用Microsoft.Data.SqlClient.

             C、在配置log4net的配置文件 log4net節點一定要設置為:<log4net debug="true">, 不然即使在program內也捕獲不到其全局異常。

      2、如需要開發自定義參數的Logger,可以參考如下代碼:

      A、 定義工具類

      using log4net;
      using log4net.Core;
      using log4net.Layout;
      using System.Reflection;

      [assembly: log4net.Config.XmlConfigurator(Watch = true)]
      namespace XD.OIDC.Core
      {

          public class XDLogPatternLayout : PatternLayout
          {
              public XDLogPatternLayout()
              {
                  this.AddConverter("XDLayout", typeof(XDLogConvert));
              }
          }

          public class XDLogConvert : log4net.Layout.Pattern.PatternLayoutConverter
          {
              protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
              {
                  if (!string.IsNullOrEmpty(Option))
                  {
                      object obj = loggingEvent.MessageObject;
                      if (obj != null)
                      {
                          PropertyInfo info = obj.GetType().GetProperty(Option);
                          if (info != null)
                          {
                              object custMsg = info.GetValue(obj, null);
                              writer.Write(custMsg);
                          }
                      }
                  }
              }
          }

          public class XDLogModel
          {
              public string IP { get; set; } = "localhost";

              public string UserName { get; set; } = "張三";

              public string Msg { get; set; } = "XDLog Message";
          }

          public class LogHelper
          {
              private static readonly log4net.ILog logDefault = log4net.LogManager.GetLogger("XDLOG");

              public static XDLogModel GetXDLogModel()
              {
                  XDLogModel model = new XDLogModel();
                  return model;
              }

              public static void LogInfo(XDLogModel msg) {
                  logDefault.InfoFormat($"IP:{msg.IP},UserName:{msg.UserName},Mesage:{msg.Msg}", msg);
                  logDefault.Info(msg );
              }
          }
      }

      B、在需要的位置記錄日志

       XD.OIDC.Core.LogHelper.LogInfo( new XD.OIDC.Core.XDLogModel { IP="localhost", UserName = "張三",Msg = "李四"});         

      C、Log4net.config文件配置

      <log4net>    
          <appender name="SqlServer_AdoNetAppender"
                    type="log4net.Appender.AdoNetAppender">
              <!--每次緩存的消息數,bufferSize=0時,表示每條日志立即寫入DB-->
              <bufferSize value="0"/>
              <connectionType value="Microsoft.Data.SqlClient.SqlConnection,Microsoft.Data.SqlClient, Version=5.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5"/>
              <connectionString value="Data Source=.\sqlexpress;Initial Catalog=XDLog;User ID=sa;Password=123456;Trust Server Certificate=True"/>
              <commandText value="INSERT INTO Sys_Log(Date,Thread,Level,Logger,Message,Exception) VALUES (@date, @thread, @level, @logger, @message, @exception)"/>
              <parameter>
                  <parameterName value="@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="@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>
          <appender name="SqlServer_AdoNet_Http_Appender"
                    type="log4net.Appender.AdoNetAppender">
              <!--每次緩存的消息數,bufferSize=0時,表示每條日志立即寫入DB-->
              <bufferSize value="0"/>
              <connectionType value="Microsoft.Data.SqlClient.SqlConnection,Microsoft.Data.SqlClient, Version=5.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5"/>
              <connectionString value="Data Source=.\sqlexpress;Initial Catalog=XDLog;User ID=sa;Password=123qwe!@#;Trust Server Certificate=True"/>
              <commandText value="INSERT INTO Sys_Log_Http(Date,Thread,Level,Logger,Message,Exception) VALUES (@date, @thread, @level, @logger, @message, @exception)"/>
              <parameter>
                  <parameterName value="@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="@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>
          <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="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception"/>
              </layout>
          </appender>    
          <appender name="ConsoleAppender"
                    type="log4net.Appender.ManagedColoredConsoleAppender">
              <mapping>
                  <level value="ERROR"/>
                  <foreColor value="Red"/>
              </mapping>
              <mapping>
                  <level value="WARN"/>
                  <foreColor value="Yellow"/>
              </mapping>
              <mapping>
                  <level value="INFO"/>
                  <foreColor value="White"/>
              </mapping>
              <mapping>
                  <level value="DEBUG"/>
                  <foreColor value="Green"/>
              </mapping>
              <layout type="log4net.Layout.PatternLayout">
                  <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception"/>
              </layout>
          </appender>
          <appender name="XDAdo_Appender"
                    type="log4net.Appender.AdoNetAppender">
              <!--每次緩存的消息數,bufferSize=0時,表示每條日志立即寫入DB-->
              <bufferSize value="0"/>
              <connectionType value="Microsoft.Data.SqlClient.SqlConnection,Microsoft.Data.SqlClient, Version=5.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5"/>
              <connectionString value="Data Source=.\sqlexpress;Initial Catalog=XDLog;User ID=sa;Password=123qwe!@#;Trust Server Certificate=True"/>
              <commandText value="INSERT INTO Sys_Log_Xd(Date,IP,UserName,Msg) VALUES (getdate(), @IP, @UserName,@Msg)"/>
              <parameter>
                  <parameterName value="@IP"/>
                  <dbType value="String"/>
                  <size value="255"/>
                  <layout type="XD.OIDC.Core.XDLogPatternLayout">
                      <XDLogConvert value="%IP"/>
                  </layout>
              </parameter>
              <parameter>
                  <parameterName value="@UserName"/>
                  <dbType value="String"/>
                  <size value="255"/>
                  <layout type="XD.OIDC.Core.XDLogPatternLayout">
                      <XDLogConvert value="%UserName"/>
                  </layout>
              </parameter>
              <parameter>
                  <parameterName value="@Msg"/>
                  <dbType value="String"/>
                  <size value="255"/>
                  <layout type="XD.OIDC.Core.XDLogPatternLayout">
                      <XDLogConvert value="%Msg"/>
                  </layout>
              </parameter>
              <!--<layout type="XD.OIDC.Core.XDLogPatternLayout">
              <conversionPattern value="%XDLayout{@IP} %XDLayout{@UserName} %XDLayout{@Msg} " />
            </layout>-->
          </appender>
          <logger name="Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware">
              <!--
            日志的Level設置值:ALL、EBUG、INFO、WARN、ERROR、FATAL、OFF 如需高級調試設置以及log4net的高級配置請參見log4net文檔
            -->
              <level value="INFO"/>
              <appender-ref ref="SqlServer_AdoNet_Http_Appender"/>
          </logger>
          <logger name="XDLOG">
              <level value="INFO"/>
              <appender-ref ref="XDAdo_Appender"/>
          </logger>
          <root>
              <!--日志的Level設置值:ALL、DEBUG、INFO、WARN、ERROR、FATAL、OFF 如需高級調試設置以及log4net的高級配置請參見log4net文檔-->
              <level value="TRACE"/>
              <appender-ref ref="RollingFile"/>
              <appender-ref ref="TraceAppender"/>
              <appender-ref ref="ConsoleAppender"/>
              <appender-ref ref="SqlServer_AdoNetAppender"/>
          </root>
      </log4net>

       3、如log4net日志記錄在數據庫時,其數據庫驅動不必在項目內引用(因為log4net是根據配置文件去查找驅動),只需將對應的數據驅動Copy到運行目錄即可。

      posted @ 2024-12-30 20:50  千年海巖  閱讀(123)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲欧美日产综合在线网| 自拍第一区视频在线观看| 国产自在自线午夜精品| 毛片亚洲AV无码精品国产午夜| 欧美人成精品网站播放| 亚洲日韩国产精品第一页一区| 国产福利萌白酱在线观看视频 | 成人中文在线| 精品国产av最大网站| 亚洲综合欧美在线…| 8AV国产精品爽爽ⅤA在线观看| 国产午夜免费高清久久影院| 欧美人禽杂交狂配| 中文字幕网红自拍偷拍视频| 成人免费无遮挡在线播放| 亚洲国产日韩伦中文字幕| 99国产欧美另类久久久精品| 国产福利深夜在线播放| 精品一区二区久久久久久久网站| 午夜福利一区二区三区在线观看| 国产精品中文av专线| 国内在线视频一区二区三区| 日韩中文字幕一区二区不卡| 国产高清在线男人的天堂| 中国凸偷窥xxxx自由视频| 久久久无码精品亚洲日韩蜜桃| 国产美女被遭强高潮免费一视频| 秋霞电影院午夜无码免费视频| 久久亚洲精品人成综合网| 午夜性爽视频男人的天堂| 拉萨市| 午夜亚洲国产理论片亚洲2020| 果冻传媒董小宛视频| 精品无码久久久久久尤物| 少妇极品熟妇人妻无码| 国产亚洲一区二区三区成人| 欧美成本人视频免费播放| 国产女人喷潮视频免费| 日韩一区二区三区在线观院| 亚洲国产欧美在线人成AAAA| 亚洲丰满熟女一区二区蜜桃 |