Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 private void Aop_CurdAfter(object sender, CurdAfterEventArgs e)
 {
     if (e.Exception != null)
     {
         _log.Error("SQL 语句执行出错。", e.Exception);
     }
 }
Пример #4
0
        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);
            }
        }