私はいくつかのスケジュールされたタスクを実行するためにタイマーコントロールを使用しているWindowsサービスを開発しました。 timer elapseイベントは5分ごとに発生し、log4net appenderを使用してOracleデータベースにログエントリが作成されます。log4net Adonet Appender接続の問題
DBサーバーが夜間のコールドバックアップのすべての接続を閉じるまで、すべて正常に動作します。それ以来、バックアップ処理に30分以下かかる場合でも、サービスが再起動されない限り、DB内のすべてのログは失われ、何も記録されません。
他の投稿から、私はlog4netが1つの接続しか使用しないことが分かりました。もし紛失した場合、その後のすべてのログは破棄されます。これを解決するために、設定でReconnectOnError属性をtrueに設定して使用を開始しました。しかし残念ながら、この問題はまだ残っています。バックアップ後もログは失われています。トレースを有効にしてエラーが検出されましたが、この問題の解決方法はわかりません。
log4netの:ERROR [CustomAdoNetAppender】例外データベース Oracle.DataAccess.Client.OracleException ORA-03113への書き込み中:エンドオブファイル通信チャネル上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.SendBufferで210(LoggingEventな[]イベント)
と:
log4netの:ERROR [CustomAdoNetAppender]例外データベースへの書き込み中に のSystem.InvalidOperationException:接続が既にの一部でありますローカルまたは分散トランザクション (Oracle.DataAccess.Client.OracleConnection.BeginTransaction(IsolationLevel isolationLevel)) (Oracle.DataAccess.Client.OracleConnection.BeginDbTransaction(IsolationLevel isolationLevel)) at System.Data.Common.DbConnection.System.Data IDbConnection.BeginT ransaction()log4net.Appender.AdoNetAppender.SendBuffer(LoggingEventな[]イベント)
で高く評価この上の任意のヘルプ!
返信いただきありがとうございます。 log4netの例外をどこかカスタムアペンダーで捕捉することは可能ですか? – Lucky