我开发了一个Windows服务,其中我使用计时器控件执行一些计划任务。定时器过期事件每5分钟发生一次,其中使用log4net appender向Oracle数据库创建日志条目。log4net Adonet Appender连接问题
所有工作正常,直到数据库服务器关闭夜间冷备份的所有连接。从那时起,所有DB中的日志都会丢失,并且不记录任何内容,除非服务重新启动,即使备份过程少于30分钟。
从其他帖子我发现,log4net只使用一个连接,如果丢失,则所有后续日志都将被丢弃。为了弥补这一点,我开始在其配置中使用ReconnectOnError属性集作为true。但不幸的是,这个问题仍然存在。备份后日志仍然丢失。我启用了跟踪并发现了以下错误,但我不知道如何解决此问题。
log4net的:ERROR [CustomAdoNetAppender]异常当写入到数据库 Oracle.DataAccess.Client.OracleException ORA-03113:在Oracle.DataAccess.Client.OracleException.HandleErrorHelper上通信信道文件结束-(的Int32 ERRCODE ,康涅狄格州的OracleConnection,IntPtr的opsErrCtx,OpoSqlValCtx * pOpoSqlValCtx,对象的src,字符串过程) 在Oracle.DataAccess.Client.OracleException.HandleError(的Int32 ERRCODE,康涅狄格州的OracleConnection,字符串过程,IntPtr的opsErrCtx,OpoSqlValCtx * pOpoSqlValCtx,对象SRC) 在Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery() at log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran,LoggingEvent [] events) log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent所[]事件)
和:
log4net的:ERROR [CustomAdoNetAppender]异常当写入到数据库 System.InvalidOperationException:连接已经是部分本地或分布式事务 at Oracle.DataAccess.Client.OracleConnection.BeginTransaction(IsolationLevel isolationLevel) at Oracle.DataAccess.Client.OracleConnection.BeginDbTransaction(IsolationLevel isolationLevel) at System.Data.Common.DbConnection.System.Data。 IDbConnection.BeginT ransaction() 在log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent所[]事件)
任何帮助在此高度赞赏!!
感谢您的回复。是否有可能在某处或在自定义Appender中捕获log4net异常? – Lucky