gpt4 book ai didi

c# - log4net Adonet Appender 连接问题

转载 作者:太空狗 更新时间:2023-10-29 20:34:22 25 4
gpt4 key购买 nike

我开发了一个 Windows 服务,我在其中使用计时器控件来执行一些计划任务。计时器超时事件每 5 分钟发生一次,其中使用 log4net appender 向 Oracle 数据库创建一个日志条目。

一切正常,直到数据库服务器关闭所有连接以进行夜间冷备份。从那时起,数据库中的所有日志都丢失了,除非重新启动服务,否则不会记录任何内容,即使备份过程只需要不到 30 分钟。

从其他帖子中我发现 log4net 仅使用一个连接,如果该连接丢失,则所有后续日志都将被丢弃。为了解决这个问题,我开始在其配置中使用 ReconnectOnError 属性设置为 true。但不幸的是,问题仍然存在。备份后日志仍然丢失。我启用了跟踪并发现了以下错误,但我不知道如何解决这个问题。

log4net:ERROR [CustomAdoNetAppender] Exception while writing to database Oracle.DataAccess.Client.OracleException ORA-03113: end-of-file on communication channel at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure) at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src) at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery() at log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events) at log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events)

和:

log4net:ERROR [CustomAdoNetAppender] Exception while writing to database System.InvalidOperationException: Connection is already part of a local or a distributed transaction at Oracle.DataAccess.Client.OracleConnection.BeginTransaction(IsolationLevel isolationLevel) at Oracle.DataAccess.Client.OracleConnection.BeginDbTransaction(IsolationLevel isolationLevel) at System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction() at log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events)

对此非常感谢!

最佳答案

我个人认为这是 log4net AdoNetAppender 中的错误。

在 log4net 1.2.11 中,AdoNetAppender 犯下了保持开放连接而不是使用连接池的主要错误。

ReconnectOnError 选项看起来也坏了:它只在当前连接状态不是 ConnectionState.Open 时才尝试重新连接,这似乎是错误的:我不相信连接状态会在有是一个错误(枚举值 ConnectionState.Broken 在 MSDN 中记录为为产品的 future 版本保留)。

总而言之,我建议您实现自己的自定义附加程序,以正确执行连接池。它不是一个很大的类,因此很容易复制和修复。

关于c# - log4net Adonet Appender 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13624150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com