0

私はlog4netに入っている奇妙な問題があります。 AdoDotNet appenderでlog4netを有効にしました。一般的にうまく動作し、データベースにログインしていますが、突然停止してデータベースにログインしないことがあります。しかし、レベル情報を情報からデバッグに変更し、再び情報にデバッグすると、作業が開始され、データベースにログインします。 私はさらに調査を行い、log4netの内部デバッグを有効にし、RollingFileAppenderInfoErrorLoggerアペンダを追加して、AdonetAppenderまたはlog4net一般の問題であるかどうかを追跡しました。そうLog4Netはエラー後にデータベースにログインしていません。どのようにファイルにログインしていますか

今、この問題はlog4netの内部デバッグ中に発生したとき、それはエラーの下に投げていると、その停止をするまで、データベースにログインし、私はlog4netのコンフィグで何かを変えない限り、ファイルアペンダにそのキープログイン
このエラー私の質問はlog4netが何らかの例外の後に起動していないのにまだファイルにログインしていない理由です。このような例外の後にdbロギングを再開する方法

log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Failed in DoAppend 
System.Data.SqlClient.SqlException (0x80131904): A transport-level error has occurred when sending the request to the server. (provider: Named Pipes Provider, error: 0 - The specified network name is no longer available.) ---> System.ComponentModel.Win32Exception (0x80004005): The specified network name is no longer available 
    at System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc, Boolean sync, TaskCompletionSource`1 completion, Int32 startRpc, Int32 startParam) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) 
    at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) 
    at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 
    at log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events) 
    at log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events) 
    at log4net.Appender.BufferingAppenderSkeleton.Append(LoggingEvent loggingEvent) 
    at log4net.Appender.AppenderSkeleton.DoAppend(LoggingEvent loggingEvent) 
ClientConnectionId:a1efe1ac-6986-4a15-a233-7dcfee4ef60e 
Error Number:64,State:0,Class:20 

以下は私のlog4net設定ファイルです。

<?xml version="1.0"?> 
<configuration> 
    <log4net debug="true"> 
     <appender name="DebugAppender" type="log4net.Appender.DebugAppender"> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%-4timestamp [%thread] %-5level %logger - %message%newline"/> 
      </layout> 
     </appender> 
     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%-4timestamp [%thread] %-5level %logger - %message%newline"/> 
      </layout> 
     </appender> 
<appender name="RollingFileAppenderInfoErrorLogger" type="log4net.Appender.RollingFileAppender"> 
    <file value="D:\Halo\Logs\LoaderService.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="10240KB" /> 
    <staticLogFileName value="true" /> 
    <countDirection value="1"/> 
    <threshold value="INFO"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %level %logger - %message%newline%newline" /> 
    </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
     <param name="LevelMin" value="INFO"/> 
     <param name="LevelMax" value="Error"/> 
    </filter> 
    </appender> 
     <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
      <bufferSize value="1"/> 
      <usetransactions value="false"/> 
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <connectionStringName value="HaloAutomationLog"/> 
      <commandText value="INSERT INTO [HaloAMS].[Logging].[ApplicationLog] ([LogDate],[Thread],[LogLevel],[Logger],[LogMessage],[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="-1"/> 
       <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> 
     <root> 
      <level value="INFO" />  
      <appender-ref ref="RollingFileAppenderInfoErrorLogger" /> 
     <appender-ref ref="AdoNetAppender"/> 
     </root> 
    </log4net> 
</configuration> 
+0

がで役立ちますこの場合? –

答えて

1

あなたのアペンダの構成に

<reconnectonerror value="True" /> 

を追加したり、追加することができます。

ConnectRetryCount=X; //where x is the times you want to reconnection 

あなたたconnectionStringに

+0

Peterに感謝します。このConnectRetryCountはSQL Server 2008で動作しますか? –

関連する問題