async public Task <long> ExecuteAffrowsAsync() { var sql = this.ToSql(); if (string.IsNullOrEmpty(sql)) { return(0); } var before = new CurdBeforeEventArgs(_pgsqlInsert.InternalTable.Type, _pgsqlInsert.InternalTable, CurdType.Insert, sql, _pgsqlInsert.InternalParams); _pgsqlInsert.InternalOrm.Aop.CurdBefore?.Invoke(_pgsqlInsert, before); long ret = 0; Exception exception = null; try { ret = await _pgsqlInsert.InternalOrm.Ado.ExecuteNonQueryAsync(_pgsqlInsert.InternalConnection, _pgsqlInsert.InternalTransaction, CommandType.Text, sql, _pgsqlInsert.InternalParams); } catch (Exception ex) { exception = ex; throw ex; } finally { var after = new CurdAfterEventArgs(before, exception, ret); _pgsqlInsert.InternalOrm.Aop.CurdAfter?.Invoke(_pgsqlInsert, after); ClearData(); } return(ret); }
public long ExecuteAffrows() { var sql = this.ToSql(); if (string.IsNullOrEmpty(sql)) { return(0); } var before = new CurdBeforeEventArgs(_mysqlInsert.InternalTable.Type, _mysqlInsert.InternalTable, CurdType.Insert, sql, _mysqlInsert.InternalParams); _mysqlInsert.InternalOrm.Aop.CurdBeforeHandler?.Invoke(_mysqlInsert, before); long ret = 0; Exception exception = null; try { ret = _mysqlInsert.InternalOrm.Ado.ExecuteNonQuery(_mysqlInsert.InternalConnection, _mysqlInsert.InternalTransaction, CommandType.Text, sql, _mysqlInsert._commandTimeout, _mysqlInsert.InternalParams); } catch (Exception ex) { exception = ex; throw; } finally { var after = new CurdAfterEventArgs(before, exception, ret); _mysqlInsert.InternalOrm.Aop.CurdAfterHandler?.Invoke(_mysqlInsert, after); ClearData(); } return(ret); }
private void Aop_CurdAfter(object sender, CurdAfterEventArgs e) { if (e.Exception != null) { _log.Error("SQL 语句执行出错。", e.Exception); } }
public void CurdAfter([Object] CurdAfterEventArgs eventData) { var context = _localSegmentContextAccessor.Context; if (context != null) { if (eventData?.Exception != null) { context.Span.ErrorOccurred(eventData.Exception, _tracingConfig); } _tracingContext.Release(context); } }
private static void Aop_CurdAfter(object sender, CurdAfterEventArgs e) { Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine("<<<<<<<<<<<<<<< 数据库日志 BEGIN >>>>>>>>>>>>>>"); var curdType = "查询"; switch (e.CurdType) { case CurdType.Select: break; case CurdType.Delete: curdType = "删除"; break; case CurdType.Update: curdType = "更新"; break; case CurdType.Insert: curdType = "新增"; break; } Console.ForegroundColor = ConsoleColor.DarkCyan; Console.WriteLine($"{curdType}实体:{e.EntityType.Name}"); Console.WriteLine($"执行时间:{e.ElapsedMilliseconds}毫秒"); Console.WriteLine($"{e.Sql}"); if (e.DbParms.Length > 0) { Console.ForegroundColor = ConsoleColor.DarkYellow; foreach (var item in e.DbParms) { Console.Write($"{item.ParameterName}".PadRight(30, ' ')); Console.WriteLine($"{item.Value}"); } } if (e.Exception != null) { Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine($"错误信息:{e.Exception.Message}"); } Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine("<<<<<<<<<<<<<<< 数据库日志 END >>>>>>>>>>>>>>>>"); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); }
private static void InternalExecutedOpt( FreeSqlInterceptorDescriptor descriptor, CurdAfterEventArgs args, Func <CurdAfterEventArgs, object> executedAct = null, Func <Exception, CurdAfterEventArgs, object> errorAct = null, Func <string, LogEventLevel, bool> filter = null) { object loggingParams; var errorFlag = args.Exception != null; var userInfo = errorFlag ? errorAct?.Invoke(args.Exception, args) ?? string.Empty : executedAct?.Invoke(args) ?? string.Empty; var logger = descriptor.ExposeLoggingServiceProvider.GetLogger <IAdo>(filter, LogEventSendMode.Automatic, descriptor.RenderingOptions); if (!errorFlag && args.ElapsedMilliseconds > 1000) { if (!logger.IsEnabled(LogEventLevel.Warning)) { return; } var eventId = new LogEventId(args.Identifier, EventIdKeys.LongTimeExecuted); loggingParams = new { OrmName = Constants.SinkKey, ContextId = args.Identifier, args.Sql, SqlParams = args.DbParms.Select(param => new DbParam(param.ParameterName, param.Value, param.DbType)).ToList(), UsedTime = args.ElapsedMilliseconds, UserInfo = userInfo }; logger.LogWarning(eventId, OrmTemplateStandard.LongNormal, loggingParams); } else if (!errorFlag) { if (!logger.IsEnabled(LogEventLevel.Information)) { return; } var eventId = new LogEventId(args.Identifier, EventIdKeys.Executed); loggingParams = new { OrmName = Constants.SinkKey, ContextId = args.Identifier, args.Sql, UsedTime = args.ElapsedMilliseconds, UserInfo = userInfo }; logger.LogInformation(eventId, OrmTemplateStandard.Normal, loggingParams); } else { if (!logger.IsEnabled(LogEventLevel.Error)) { return; } var eventId = new LogEventId(args.Identifier, EventIdKeys.Error); var exception = args.Exception; var realException = exception.Unwrap(); loggingParams = new { OrmName = Constants.SinkKey, ContextId = args.Identifier, args.Sql, SqlParams = args.DbParms.Select(param => new DbParam(param.ParameterName, param.Value, param.DbType)).ToList(), ExceptionType = exception.GetType(), ExceptionMessage = exception.Message, RealExceptionType = realException.GetType(), RealExceptionMessage = realException.Message, UsedTime = args.ElapsedMilliseconds, UserInfo = userInfo }; logger.LogError(eventId, exception, OrmTemplateStandard.Error, loggingParams); } }