Alessio Sanguineti created LOG4NET-442: ------------------------------------------
Summary: ReconnectOnError Key: LOG4NET-442 URL: https://issues.apache.org/jira/browse/LOG4NET-442 Project: Log4net Issue Type: Bug Components: Builds Affects Versions: 1.2.13 Environment: Microsoft .NET 4.5 Reporter: Alessio Sanguineti Hello, in our .NET application using Log4Net to log on a Sql Server 2014 database, we have set the parameter "ReconnectOnError" to true in the LogConfig.xml. As a test, we have stopped sql server and then re-started it, but the logger does not reconnect. We get the following log file: log4net: log4net assembly [log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=1b44e1d426115821]. Loaded from [C:\Projects\SIdG\TranslationEngine\bin\Debug\log4net.dll]. (.NET Runtime [4.0.30319.18444] on Microsoft Windows NT 6.1.7601 Service Pack 1) log4net: defaultRepositoryType [log4net.Repository.Hierarchy.Hierarchy] log4net: Creating repository for assembly [TranslationEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] log4net: Assembly [TranslationEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [C:\Projects\SIdG\TranslationEngine\bin\Debug\TranslationEngine.exe] log4net: Assembly [TranslationEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified. log4net: Assembly [TranslationEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy] log4net: Creating repository [log4net-default-repository] using type [log4net.Repository.Hierarchy.Hierarchy] log4net: configuring repository [log4net-default-repository] using file [C:\Projects\SIdG\TranslationEngine\bin\Debug\/LogConfig.xml] watching for file updates log4net: configuring repository [log4net-default-repository] using file [C:\Projects\SIdG\TranslationEngine\bin\Debug\/LogConfig.xml] log4net: configuring repository [log4net-default-repository] using stream log4net: loading XML configuration log4net: Configuring Repository [log4net-default-repository] log4net: Configuration update mode [Merge]. log4net: Logger [root] Level string is [DEBUG]. log4net: Logger [root] level set to [name="DEBUG",value=30000]. log4net: Loading Appender [AdoNetAppender] type: [log4net.Appender.AdoNetAppender] log4net: Setting Property [BufferSize] to Int32 value [1] log4net: Setting Property [ReconnectOnError] to Boolean value [True] log4net: Setting Property [ConnectionType] to String value [System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] log4net: Setting Property [ConnectionString] to String value [data source=HYLSRVSIDG;initial catalog=SIDG_Log_AS;integrated security=false;persist security info=True;User ID=sa;Password=***;connection timeout=10; ConnectRetryCount=50; ConnectRetryInterval =30] log4net: Setting Property [CommandText] to String value [INSERT INTO dbo.Log ([Message],[Level],[Thread],[Logger],[Exception],[Timestamp],[Operation_Instance],[Operation_ID]) VALUES (@message,@log_level, @thread, @logger, @exception,@log_date, @opinst, @opid)] log4net: Setting Property [ParameterName] to String value [@log_date] log4net: Setting Property [DbType] to DbType value [DateTime] log4net: Setting Property [Layout] to object [log4net.Layout.RawTimeStampLayout] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@thread] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [255] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [ConversionPattern] to String value [%thread] log4net: Converter [thread] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@log_level] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [50] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [ConversionPattern] to String value [%level] log4net: Converter [level] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@logger] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [255] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [ConversionPattern] to String value [%logger] log4net: Converter [logger] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@message] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [4000] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [ConversionPattern] to String value [%message] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@exception] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [4000] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@opinst] log4net: Setting Property [DbType] to DbType value [Int32] log4net: Setting Property [Key] to String value [OperationInstance] log4net: Setting Property [Layout] to object [log4net.Layout.RawPropertyLayout] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@opid] log4net: Setting Property [DbType] to DbType value [Int32] log4net: Setting Property [Key] to String value [OperationID] log4net: Setting Property [Layout] to object [log4net.Layout.RawPropertyLayout] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Created Appender [AdoNetAppender] log4net: Adding appender named [AdoNetAppender] to logger [root]. log4net: Hierarchy Threshold [] log4net: Shutdown called on Hierarchy [log4net-default-repository] log4net: log4net assembly [log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=1b44e1d426115821]. Loaded from [C:\Projects\SIdG\TranslationEngine\bin\Debug\log4net.dll]. (.NET Runtime [4.0.30319.18444] on Microsoft Windows NT 6.1.7601 Service Pack 1) log4net: defaultRepositoryType [log4net.Repository.Hierarchy.Hierarchy] log4net: Creating repository for assembly [TranslationEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] log4net: Assembly [TranslationEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [C:\Projects\SIdG\TranslationEngine\bin\Debug\TranslationEngine.exe] log4net: Assembly [TranslationEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified. log4net: Assembly [TranslationEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy] log4net: Creating repository [log4net-default-repository] using type [log4net.Repository.Hierarchy.Hierarchy] log4net: configuring repository [log4net-default-repository] using file [C:\Projects\SIdG\TranslationEngine\bin\Debug\/LogConfig.xml] watching for file updates log4net: configuring repository [log4net-default-repository] using file [C:\Projects\SIdG\TranslationEngine\bin\Debug\/LogConfig.xml] log4net: configuring repository [log4net-default-repository] using stream log4net: loading XML configuration log4net: Configuring Repository [log4net-default-repository] log4net: Configuration update mode [Merge]. log4net: Logger [root] Level string is [DEBUG]. log4net: Logger [root] level set to [name="DEBUG",value=30000]. log4net: Loading Appender [AdoNetAppender] type: [log4net.Appender.AdoNetAppender] log4net: Setting Property [BufferSize] to Int32 value [1] log4net: Setting Property [ReconnectOnError] to Boolean value [True] log4net: Setting Property [ConnectionType] to String value [System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] log4net: Setting Property [ConnectionString] to String value [data source=HYLSRVSIDG;initial catalog=SIDG_Log_AS;integrated security=false;persist security info=True;User ID=sa;Password=***;connection timeout=10] log4net: Setting Property [CommandText] to String value [INSERT INTO dbo.Log ([Message],[Level],[Thread],[Logger],[Exception],[Timestamp],[Operation_Instance],[Operation_ID]) VALUES (@message,@log_level, @thread, @logger, @exception,@log_date, @opinst, @opid)] log4net: Setting Property [ParameterName] to String value [@log_date] log4net: Setting Property [DbType] to DbType value [DateTime] log4net: Setting Property [Layout] to object [log4net.Layout.RawTimeStampLayout] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@thread] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [255] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [ConversionPattern] to String value [%thread] log4net: Converter [thread] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@log_level] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [50] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [ConversionPattern] to String value [%level] log4net: Converter [level] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@logger] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [255] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [ConversionPattern] to String value [%logger] log4net: Converter [logger] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@message] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [4000] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [ConversionPattern] to String value [%message] log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@exception] log4net: Setting Property [DbType] to DbType value [String] log4net: Setting Property [Size] to Int32 value [4000] log4net: Setting Property [Layout] to object [log4net.Layout.Layout2RawLayoutAdapter] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@opinst] log4net: Setting Property [DbType] to DbType value [Int32] log4net: Setting Property [Key] to String value [OperationInstance] log4net: Setting Property [Layout] to object [log4net.Layout.RawPropertyLayout] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Setting Property [ParameterName] to String value [@opid] log4net: Setting Property [DbType] to DbType value [Int32] log4net: Setting Property [Key] to String value [OperationID] log4net: Setting Property [Layout] to object [log4net.Layout.RawPropertyLayout] log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] log4net: Created Appender [AdoNetAppender] log4net: Adding appender named [AdoNetAppender] to logger [root]. log4net: Hierarchy Threshold [] log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database System.Data.SqlClient.SqlException (0x80131904): The connection is broken and recovery is not possible. The client driver attempted to recover the connection one or more times and all attempts failed. Increase the value of ConnectRetryCount to increase the number of recovery attempts. ---> System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) ---> System.ComponentModel.Win32Exception (0x80004005): Access is denied at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.ReplaceConnection(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlInternalConnectionTds.TryReplaceConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.OpenAsync(CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.SqlClient.SqlConnection.<ReconnectAsync>d__0.MoveNext() ClientConnectionId:00000000-0000-0000-0000-000000000000 at System.Data.SqlClient.SqlConnection.<ReconnectAsync>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Data.SqlClient.AsyncHelper.WaitForCompletion(Task task, Int32 timeout, Action onTimeout, Boolean rethrowExceptions) at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest transactionRequest, String transactionName, IsolationLevel iso, SqlInternalTransaction internalTransaction, Boolean isDelegateControlRequest) at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest transactionRequest, String name, IsolationLevel iso, SqlInternalTransaction internalTransaction, Boolean isDelegateControlRequest) at System.Data.SqlClient.SqlInternalConnection.BeginSqlTransaction(IsolationLevel iso, String transactionName, Boolean shouldReconnect) at System.Data.SqlClient.SqlConnection.BeginTransaction(IsolationLevel iso, String transactionName) at System.Data.SqlClient.SqlConnection.BeginDbTransaction(IsolationLevel isolationLevel) at System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction() at log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events) ClientConnectionId:e902ccea-9b4d-4119-a119-8ef480e8dc64 Thank you. Regards -- This message was sent by Atlassian JIRA (v6.3.4#6332)