log4net에 이상한 문제가 있습니다. AdoDotNet appender로 log4net을 활성화했습니다. 일반적으로 잘 작동하고 데이터베이스에 로그인하지만 때로는 갑자기 작동을 멈추고 데이터베이스에 로그인하지 않습니다. 하지만 정보에서 디버그로 정보를 변경하고 정보로 다시 디버깅하면 작업이 시작되고 데이터베이스에 로그인됩니다. 나는 더 많은 연구를했고 log4net 내부 디버깅을 가능하게했고 RolonFileAppenderInfoErrorLogger appender를 추가하여 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>
합니까 이에 도움이 될 것입니다 이 경우? –