일부 예약 된 작업을 수행하기 위해 타이머 컨트롤을 사용하는 Windows 서비스를 개발했습니다. 타이머 경과 이벤트는 log4net appender를 사용하여 Oracle 데이터베이스에 로그 항목이 작성되는 5 분마다 발생합니다.log4net Adonet Appender 연결 문제
DB 서버가 야간 콜드 백업을 위해 모든 연결을 닫을 때까지 모두 제대로 작동합니다. 그 이후 DB에있는 모든 로그가 손실되고 백업 프로세스가 30 분 미만이 걸리는 경우에도 서비스가 다시 시작되지 않는 한 아무 것도 기록되지 않습니다.
다른 게시물에서 log4net이 하나의 연결 만 사용하면 손실 된 경우 모든 후속 로그가 삭제된다는 것을 알았습니다. 이 문제를 해결하기 위해 ReconnectOnError 특성을 구성에서 true로 설정하여 사용하기 시작했습니다. 그러나 불행히도 문제는 여전히 존재합니다. 백업 후에도 로그가 누락됩니다. 추적 기능을 활성화하고 다음 오류를 발견했지만이 문제를 해결하는 방법을 모르겠습니다.
log4net [CustomAdoNetAppender] 예외 ERROR 데이터베이스 Oracle.DataAccess.Client.OracleException ORA-3113을 쓰는 동안 : 파일 끝 Oracle.DataAccess.Client.OracleException.HandleErrorHelper에서 통신 채널 (INT32 errcode를 , Oracle.DataAccess.Client.OracleException.HandleError (INT32 errcode를, OracleConnection CONN, 문자열 절차, IntPtr입니다 opsErrCtx, OpoSqlValCtx * pOpoSqlValCtx, 개체 SRC) 에서 OracleConnection CONN, IntPtr입니다 opsErrCtx, OpoSqlValCtx * pOpoSqlValCtx, 개체 SRC, 문자열 절차) 에서 Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()at log4net.Appender.AdoNetAppender.SendBuffer (IDbTransaction dbTran, LoggingEvent [] events)log4net.Appender.AdoNetAppender.SendBuffer210 (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 log4net.Appender.AdoNetAppender.SendBuffer에서 ransaction() (LoggingEvent [] 이벤트)이 높게 평가에
어떤 도움!
답장을 보내 주셔서 감사합니다. 어딘가 또는 사용자 정의 Appender에서 log4net 예외를 잡을 수 있습니까? – Lucky