[
https://issues.apache.org/jira/browse/LOG4NET-442?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alessio Sanguineti updated LOG4NET-442:
---------------------------------------
Description:
Hello, in our .NET application using Log4Net to log on a Sql Server 2014
database, we set the parameter "ReconnectOnError" to true in the ADO.Net
Appender configuration.
Even if the property seems to be read correctly (as visible on the log),
whenever the server is not reachable for a while the appender does not
reconnect anymore thus not logging anything else.
We get the log file attached of a test where we turned off SQL Server for about
1 minute before restarting it.
Thank you.
Regards
was:
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 did 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
> 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
> Attachments: log4net.txt
>
>
> Hello, in our .NET application using Log4Net to log on a Sql Server 2014
> database, we set the parameter "ReconnectOnError" to true in the ADO.Net
> Appender configuration.
> Even if the property seems to be read correctly (as visible on the log),
> whenever the server is not reachable for a while the appender does not
> reconnect anymore thus not logging anything else.
> We get the log file attached of a test where we turned off SQL Server for
> about 1 minute before restarting it.
> Thank you.
> Regards
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)