예제 #1
0
        /// <summary>
        /// Log
        /// </summary>
        /// <param name="logTrack"></param>
        /// <param name="level"></param>
        /// <param name="exception"></param>
        /// <param name="messageTemplate"></param>
        /// <param name="contextAct"></param>
        /// <param name="memberName"></param>
        /// <param name="filePath"></param>
        /// <param name="lineNumber"></param>
        public virtual void Log(LogTrack logTrack, LogEventLevel level, Exception exception, string messageTemplate, Action <LogEventContext> contextAct,
                                [CallerMemberName] string memberName = null,
                                [CallerFilePath] string filePath     = null,
                                [CallerLineNumber] int lineNumber    = 0)
        {
            var ctx = TouchLogEventContext(contextAct);

            Write(logTrack, level, exception, messageTemplate, ctx.SendMode,
                  new LogCallerInfo(memberName, filePath, lineNumber), ctx);
        }
예제 #2
0
        /// <summary>
        /// Log
        /// </summary>
        /// <param name="logTrack"></param>
        /// <param name="level"></param>
        /// <param name="messageTemplate"></param>
        /// <param name="arg1"></param>
        /// <param name="arg2"></param>
        /// <param name="arg3"></param>
        /// <param name="contextAct"></param>
        /// <param name="memberName"></param>
        /// <param name="filePath"></param>
        /// <param name="lineNumber"></param>
        /// <typeparam name="T1"></typeparam>
        /// <typeparam name="T2"></typeparam>
        /// <typeparam name="T3"></typeparam>
        public virtual void Log <T1, T2, T3>(LogTrack logTrack, LogEventLevel level, string messageTemplate, T1 arg1, T2 arg2, T3 arg3, Action <LogEventContext> contextAct,
                                             [CallerMemberName] string memberName = null,
                                             [CallerFilePath] string filePath     = null,
                                             [CallerLineNumber] int lineNumber    = 0)
        {
            var ctx = TouchLogEventContext(contextAct);

            Write(logTrack, level, null, messageTemplate, ctx.SendMode,
                  new LogCallerInfo(memberName, filePath, lineNumber), ctx, arg1, arg2, arg3);
        }
예제 #3
0
        public void WriteLog(string sqlText, string suffixEventName, [CallerMemberName] string memberName = null)
        {
            var userInfo   = _simgleLoggingAct?.Invoke(sqlText) ?? string.Empty;
            var logTrack   = LogTrack.Create($"{EventIdKeys.SqlExposure}_{suffixEventName}");
            var loggingObj = new {
                OrmName  = Constants.SinkKey,
                Sql      = sqlText,
                UserInfo = userInfo
            };

            _logger.LogDebug(logTrack, OrmTemplateStandard.SimpleSqlLog, loggingObj, memberName);
        }
예제 #4
0
        public ActionResult Refresh(string guid, int id)
        {
            string logName = "刷新页面停留时间";
            string reJson  = "";

            try
            {
                #region 获得参数信息

                int sourceId = 0;
                int.TryParse(PageTools.CookieSourceId, out sourceId);
                string   mobile = PageTools.CookieMobile;
                LogTrack lt     = new LogTrack();
                FarmMonitor.BLL.LogTrackMan ltMan = new BLL.LogTrackMan();
                if (id > 0)
                {
                    lt = ltMan.GetEntity(id);
                }
                else
                {
                    lt = ltMan.GetEntity(guid);
                }

                #endregion

                #region 更新数据

                if (lt != null)
                {
                    lt.RefreshTime = DateTime.Now;
                    ltMan.Update(lt);
                    reJson = string.Format(json, "1", "success", "", lt.Id);
                }
                else
                {
                    reJson = string.Format(json, "2", "fail", "", 0);
                    LogRunMan.AddLog(logName, WeDo.Log.Model.EnumListLog.LogLevel.INFO, null, "刷新对象为空");
                }

                #endregion
            }
            catch (Exception ex)
            {
                LogExceptionMan.AddLog(logName, WeDo.Log.Model.EnumListLog.LogLevel.ERROR, ex);
                reJson = string.Format(json, "2", "error", "", 0);
            }

            return(Content(reJson));
        }
예제 #5
0
        private static void InternalExecutedOpt(
            SqlSugarInterceptorDescriptor descriptor,
            SqlSugarClient client,
            string sql,
            SugarParameter[] @params,
            Func<string, SugarParameter[], object> executedAct = null,
            Func<string, LogEventLevel, bool> filter = null) {

            var ms = 0D;

            if (client.TempItems.TryGetValue(TimestampKey, out var startStamp) && startStamp is DateTime stamp) {
                client.TempItems.Remove(TimestampKey);
                ms = DateTime.Now.Subtract(stamp).TotalMilliseconds;
            }

            object loggingParams;
            var userInfo = executedAct?.Invoke(sql, @params) ?? string.Empty;
            var logger = descriptor.ExposeLoggingServiceProvider.GetLogger<SqlSugarClient>(filter, LogEventSendMode.Automatic, descriptor.RenderingOptions);

            if (ms > 1000) {
                if (!logger.IsEnabled(LogEventLevel.Warning))
                    return;

                var logTrack = LogTrack.Create(client.ContextID, EventIdKeys.LongTimeExecuted);
                loggingParams = new {
                    OrmName = Constants.SinkKey,
                    ContextId = client.ContextID,
                    Sql = sql,
                    SqlParams = @params.Select(param => new DbParam(param.ParameterName, param.Value, param.DbType)).ToList(),
                    UsedTime = ms,
                    UserInfo = userInfo
                };
                logger.LogWarning(logTrack, OrmTemplateStandard.LongNormal, loggingParams);
            } else {
                if (!logger.IsEnabled(LogEventLevel.Information))
                    return;

                var logTrack = LogTrack.Create(client.ContextID, EventIdKeys.Executed);
                loggingParams = new {
                    OrmName = Constants.SinkKey,
                    ContextId = client.ContextID,
                    Sql = sql,
                    UsedTime = ms,
                    UserInfo = userInfo
                };
                logger.LogInformation(logTrack, OrmTemplateStandard.Normal, loggingParams);
            }
        }
        private void OnExecuted(
            DbCommand command, Guid contextId, DateTime start, DateTime now, double milliseconds,
            Func <string, DbParameterCollection, DateTime, DateTime, object> specificExecutedAction, string memberName)
        {
            var localFunc = _descriptor.ExposeExecutedInterceptor;

            localFunc += specificExecutedAction;
            var userInfo      = localFunc?.Invoke(command.CommandText, command.Parameters, start, now) ?? string.Empty;
            var logTrack      = LogTrack.Create(contextId, EventIdKeys.Executed);
            var logger        = _loggingServiceProvider.GetLogger <DbContext>(LogEventSendMode.Automatic, _descriptor.ExposeSettings.GetRenderingOptions());
            var loggingParams = new {
                OrmName   = Constants.SinkKey,
                ContextId = contextId,
                Sql       = command.CommandText,
                UsedTime  = milliseconds,
                UserInfo  = userInfo
            };

            logger.LogWarning(logTrack, OrmTemplateStandard.Normal, loggingParams, memberName: memberName);
        }
예제 #7
0
        public void AddLog(string systemName, int sourceId, int userId, int memberId, string cookiesSign, string moduleName, int dataType, int dataId, int shareSignId, string remark, string openId, string GUID, string session)
        {
            try
            {
                LogTrack message = new LogTrack();

                message.SystemSign  = systemName;
                message.SourceId    = sourceId;
                message.Remark      = remark;
                message.UserId      = userId;
                message.DataId      = dataId;
                message.DataType    = dataType;
                message.MemberId    = memberId;
                message.OpenId      = openId;
                message.CookiesSign = cookiesSign;
                message.ModuleName  = moduleName;
                message.ShareSignId = shareSignId;
                message.Remark      = remark;
                message.GUID        = GUID;
                message.SessionId   = session;

                try
                {
                    HttpRequest req = HttpContext.Current.Request;
                    message.IP         = req.UserHostAddress;         //IP地址
                    message.PagePath   = req.FilePath;                //页面路径
                    message.PageUrl    = req.Url.AbsoluteUri;         //完整的URL
                    message.HttpMethod = req.HttpMethod;              //请求类型
                    message.BeforeUrl  = req.UrlReferrer.AbsoluteUri; //前一页面完整URL
                }
                catch
                {
                }

                Add(message);
                //Info(message);
            }
            catch
            {
            }
        }
예제 #8
0
        private static void InternalErrorOpt(
            SqlSugarInterceptorDescriptor descriptor,
            SqlSugarClient client,
            Exception exception,
            Func<Exception, object> errorAct = null,
            Func<string, LogEventLevel, bool> filter = null) {

            var ms = 0D;

            if (client.TempItems.TryGetValue(TimestampKey, out var startStamp) && startStamp is DateTime stamp) {
                client.TempItems.Remove(TimestampKey);
                ms = DateTime.Now.Subtract(stamp).TotalMilliseconds;
            }

            object userInfo = errorAct?.Invoke(exception) ?? string.Empty;
            var logger = descriptor.ExposeLoggingServiceProvider.GetLogger<SqlSugarClient>(filter, LogEventSendMode.Automatic, descriptor.RenderingOptions);

            if (!logger.IsEnabled(LogEventLevel.Error))
                return;

            var logTrack = LogTrack.Create(client.ContextID, EventIdKeys.Error);
            var realException = exception.Unwrap();
            var loggingParams = new {
                OrmName = Constants.SinkKey,
                ContextId = client.ContextID,
                Sql = "unknown",
                SqlParams = "unknown",
                ExceptionType = exception.GetType(),
                ExceptionMessage = exception.Message,
                RealExceptionType = realException.GetType(),
                RealExceptionMessage = realException.Message,
                UsedTime = ms,
                UserInfo = userInfo
            };
            logger.LogError(logTrack, exception, OrmTemplateStandard.Error, loggingParams);
        }
 /// <inheritdoc />
 public void LogWarning(LogTrack logTrack, string messageTemplate, params object[] args)
 {
 }
 /// <inheritdoc />
 public virtual void LogDebug <T1, T2, T3>(LogTrack logTrack, Exception exception, string messageTemplate, T1 arg1, T2 arg2, T3 arg3,
                                           [CallerMemberName] string memberName = null)
 {
     Write(logTrack, LogEventLevel.Debug, exception, messageTemplate, LogEventSendMode.Customize, new LogCallerInfo(memberName), null, arg1, arg2,
           arg3);
 }
예제 #11
0
 /// <summary>
 /// Convert Microsoft Event Id to Cosmos Logging Business Track Info
 /// </summary>
 /// <param name="eventId"></param>
 /// <returns></returns>
 public static LogTrack ToTrackInfo(this EventId eventId) => LogTrack.Create(eventId.Id, eventId.Name);
예제 #12
0
 /// <inheritdoc />
 public void LogError(LogTrack logTrack, string messageTemplate, params object[] args)
 => Write(logTrack, LogEventLevel.Error, null, messageTemplate, args);
예제 #13
0
 /// <inheritdoc />
 public virtual void LogInformation(LogTrack logTrack, Exception exception, string messageTemplate,
                                    [CallerMemberName] string memberName = null)
 {
     Write(logTrack, LogEventLevel.Information, exception, messageTemplate, LogEventSendMode.Customize, new LogCallerInfo(memberName));
 }
예제 #14
0
        public ActionResult Add0(string url = "", int sourceId = 0, string mobile = "", string modulName = "")
        {
            string reJson  = "";
            string logName = "";

            try
            {
                #region 获得参数信息

                if (sourceId > 0)
                {
                    PageTools.CookieSourceId = sourceId.ToString();
                }
                else
                {
                    int.TryParse(PageTools.CookieSourceId, out sourceId);
                }
                if (!string.IsNullOrEmpty(mobile))
                {
                    PageTools.CookieMobile = mobile;
                }
                else
                {
                    mobile = PageTools.CookieMobile;
                }
                string guid       = Guid.NewGuid().ToString("N");
                string uniqueUser = PageTools.CookieUniqueUser;
                if (string.IsNullOrEmpty(uniqueUser))
                {
                    uniqueUser = Guid.NewGuid().ToString("N");
                    PageTools.CookieUniqueUser = uniqueUser;
                }

                #endregion

                #region 添加日志

                WeDo.Log.Model.LogTrackMessage message = new WeDo.Log.Model.LogTrackMessage();
                message.SourceId    = sourceId;
                message.BeforeUrl   = "";
                message.BrowserName = "";
                message.CookiesSign = uniqueUser;
                message.DataId      = 0;
                message.DataType    = 0;
                message.DeviceName  = "";
                message.GUID        = guid;
                message.HttpMethod  = "";
                message.IP          = Request.UserHostAddress;
                message.MemberId    = 0;
                message.ModuleName  = modulName;
                message.OpenId      = mobile;
                message.OSName      = "";
                message.PagePath    = url;
                message.PageUrl     = Request.Url.ToString();
                message.Remark      = "";
                message.SearchKey   = "";
                message.SearchName  = "";
                message.SessionId   = Session.SessionID;
                message.ShareSignId = 0;
                message.SourceId    = sourceId;
                message.SystemSign  = "volvo_ebook_view";
                message.UserId      = 0;


                //WeDo.Log.LogTrackMan.AddLog("volvo_ebook", sourceId, 0, 0, uniqueUser, modulName, 0, 0, 0, "", mobile, guid);
                WeDo.Log.LogTrackMan.AddLog(message, WeDo.Log.Model.EnumListLog.LogLevel.INFO);
                FarmMonitor.BLL.LogTrackMan ltMan = new BLL.LogTrackMan();
                LogTrack lt = ltMan.GetEntity(guid);
                reJson = string.Format(json, "1", "success", guid, lt.Id);

                #endregion
            }
            catch (Exception ex)
            {
                LogExceptionMan.AddLog(logName, WeDo.Log.Model.EnumListLog.LogLevel.ERROR, ex);
                reJson = string.Format(json, "2", "error", "", 0);
            }

            return(Content(reJson));
        }
 /// <inheritdoc />
 public void LogVerbose(LogTrack logTrack, string messageTemplate, params object[] args)
 {
 }
 /// <inheritdoc />
 public void LogFatal(LogTrack logTrack, Exception exception, string messageTemplate, params object[] args)
 {
 }
예제 #17
0
        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 logTrack = LogTrack.Create(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(logTrack, OrmTemplateStandard.LongNormal, loggingParams);
            }
            else if (!errorFlag)
            {
                if (!logger.IsEnabled(LogEventLevel.Information))
                {
                    return;
                }

                var logTrack = LogTrack.Create(args.Identifier, EventIdKeys.Executed);
                loggingParams = new {
                    OrmName   = Constants.SinkKey,
                    ContextId = args.Identifier,
                    args.Sql,
                    UsedTime = args.ElapsedMilliseconds,
                    UserInfo = userInfo
                };
                logger.LogInformation(logTrack, OrmTemplateStandard.Normal, loggingParams);
            }
            else
            {
                if (!logger.IsEnabled(LogEventLevel.Error))
                {
                    return;
                }

                var logTrack      = LogTrack.Create(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(logTrack, exception, OrmTemplateStandard.Error, loggingParams);
            }
        }
 /// <inheritdoc />
 public virtual void LogVerbose <T1, T2>(LogTrack logTrack, string messageTemplate, T1 arg1, T2 arg2,
                                         [CallerMemberName] string memberName = null)
 {
     Write(logTrack, LogEventLevel.Verbose, null, messageTemplate, LogEventSendMode.Customize, new LogCallerInfo(memberName), null, arg1, arg2);
 }
 /// <inheritdoc />
 public virtual void LogVerbose(LogTrack logTrack, string messageTemplate, object[] args,
                                [CallerMemberName] string memberName = null)
 {
     Write(logTrack, LogEventLevel.Verbose, null, messageTemplate, LogEventSendMode.Customize, new LogCallerInfo(memberName), null, args);
 }
 /// <inheritdoc />
 public virtual void LogVerbose <T>(LogTrack logTrack, Exception exception, string messageTemplate, T arg,
                                    [CallerMemberName] string memberName = null)
 {
     Write(logTrack, LogEventLevel.Verbose, exception, messageTemplate, LogEventSendMode.Customize, new LogCallerInfo(memberName), null, arg);
 }
예제 #21
0
 /// <inheritdoc />
 public void LogInformation(LogTrack logTrack, string messageTemplate, params object[] args)
 => Write(logTrack, LogEventLevel.Information, null, messageTemplate, args);
예제 #22
0
 public void Add(LogTrack entity)
 {
     db.LogTracks.Add(entity);
     db.SaveChanges();
 }
예제 #23
0
 /// <inheritdoc />
 public void LogFatal(LogTrack logTrack, Exception exception, string messageTemplate, params object[] args)
 => Write(logTrack, LogEventLevel.Fatal, exception, messageTemplate, args);
예제 #24
0
 public void Update(LogTrack entity)
 {
     db.Entry(entity).State = System.Data.Entity.EntityState.Modified;
     db.SaveChanges();
 }
 /// <inheritdoc />
 public virtual void LogDebug <T>(LogTrack logTrack, string messageTemplate, T arg,
                                  [CallerMemberName] string memberName = null)
 {
     Write(logTrack, LogEventLevel.Debug, null, messageTemplate, LogEventSendMode.Customize, new LogCallerInfo(memberName), null, arg);
 }
예제 #26
0
 public void Delete(LogTrack entity)
 {
     db.Entry(entity).State = System.Data.Entity.EntityState.Deleted;
     db.SaveChanges();
 }
 /// <inheritdoc />
 public virtual void LogDebug(LogTrack logTrack, Exception exception, string messageTemplate, object[] args,
                              [CallerMemberName] string memberName = null)
 {
     Write(logTrack, LogEventLevel.Debug, exception, messageTemplate, LogEventSendMode.Customize, new LogCallerInfo(memberName), null, args);
 }
 /// <inheritdoc />
 public void LogInformation(LogTrack logTrack, string messageTemplate, params object[] args)
 {
 }