コード例 #1
0
        private void LogAfter(MethodInfo methodInfo, object[] args, object result, string correlationId)
        {
            var dic        = new Dictionary <string, string>();
            var parameters = methodInfo.GetParameters();

            if (parameters.Any())
            {
                for (var i = 0; i < parameters.Length; i++)
                {
                    var parameter = parameters[i];
                    var arg       = args[i];
                    dic.Add(parameter.Name, GetStringValue(arg));
                }
            }

            var data = new
            {
                Class         = _decorated.GetType().FullName,
                Method        = methodInfo.Name,
                Result        = GetStringValue(result),
                Parameters    = dic,
                CorrelationId = correlationId
            };

            _exceptionlessClient.CreateLog($"Method completed: {data.Class}.{data.Method}", LogLevel.Debug).AddObject(data).Submit();
        }
コード例 #2
0
        public async Task ExceptionlessMoreInfo()
        {
            ExceptionlessClient _client = ExceptionlessClient.Default;

            _client.CreateLog("测试日志1", LogLevel.Info).Submit();
            _client.CreateLog("测试日志2", LogLevel.Trace).Submit();
        }
コード例 #3
0
 public void LogError(string source, string message, params string[] args)
 {
     if (args.Length > 0)
     {
         _client.CreateLog(source, message, LogLevel.Error).AddTags(args).Submit();
     }
     else
     {
         _client.SubmitLog(source, message, LogLevel.Error);
     }
 }
コード例 #4
0
 private static void WriteExceptionlessLog(string source, string message, LogLevel logLevel, params string[] tags)
 {
     if (source.IsNullOrWhiteSpace())
     {
         exceptionlessClient?.CreateLog(message, logLevel).AddTags(tags).Submit();
     }
     else
     {
         exceptionlessClient?.CreateLog(source, message, logLevel).AddTags(tags).Submit();
     }
 }
コード例 #5
0
        public IHttpActionResult Github(JObject value)
        {
            var authInfo = value.ToObject <ExternalAuthInfo>();

            if (authInfo == null || String.IsNullOrEmpty(authInfo.Code))
            {
                return(NotFound());
            }

            if (String.IsNullOrEmpty(Settings.Current.GitHubAppId) || String.IsNullOrEmpty(Settings.Current.GitHubAppSecret))
            {
                return(NotFound());
            }

            var client = new GitHubWithPrivateEmailsClient(new RequestFactory(), new RuntimeClientConfiguration {
                ClientId     = Settings.Current.GitHubAppId,
                ClientSecret = Settings.Current.GitHubAppSecret,
                RedirectUri  = authInfo.RedirectUri
            });

            UserInfo userInfo;

            try {
                userInfo = client.GetUserInfo(authInfo.Code);
            } catch (Exception ex) {
                ex.ToExceptionless().MarkAsCritical().AddTags("External Login", "GitHub").AddObject(authInfo).Submit();
                return(BadRequest("Unable to get user info."));
            }

            User user;

            try {
                user = AddExternalLogin(userInfo);
            } catch (ApplicationException) {
                return(BadRequest("Account Creation is currently disabled."));
            } catch (Exception ex) {
                ex.ToExceptionless().MarkAsCritical().AddTags("External Login", "GitHub").AddObject(authInfo).AddObject(userInfo).Submit();
                return(BadRequest("An error occurred while processing user info."));
            }

            if (user == null)
            {
                _exceptionless.CreateLog(typeof(AuthController).Name, "Unable to process user info.", "Error").AddTags("External Login", "GitHub").AddObject(authInfo).AddObject(userInfo).Submit();
                return(BadRequest("Unable to process user info."));
            }

            if (!String.IsNullOrWhiteSpace(authInfo.InviteToken))
            {
                AddInvitedUserToOrganization(authInfo.InviteToken, user);
            }

            return(Ok(new { Token = GetToken(user) }));
        }
コード例 #6
0
 public static void Log(this ExceptionlessClient client, string logMessage, string source = null, LogLevels level = LogLevels.Info)
 {
     if (client.LoggingEnabled())
     {
         client.CreateLog(source, logMessage, level.Text()).Submit();
     }
 }
コード例 #7
0
        public Task CommitAsync()
        {
            _exceptionlessClient.CreateLog(_messageTitle, _logLevel)
            .AddObject(string.Join(Environment.NewLine, _messageDetails), "Details")
            .Submit();

            return(_exceptionlessClient.ProcessQueueAsync());
        }
コード例 #8
0
 /// <summary>
 /// 创建事件生成器
 /// </summary>
 private EventBuilder CreateBuilder(LogLevel level, ILogContent content)
 {
     if (content.Exception != null)
     {
         return(_client.CreateException(content.Exception));
     }
     return(_client.CreateLog(GetMessage(content), ConvertTo(level)));
 }
コード例 #9
0
        private void CreateLog(Exception exception, string type, string message, global::Exceptionless.Logging.LogLevel level)
        {
            _exceptionlessClient.CreateLog(
                type,
                message,
                level)
            .SetException(exception)
            .Submit();

            _exceptionlessClient.ProcessQueue();
        }
コード例 #10
0
        /// <summary>
        /// 记录日志
        /// </summary>
        /// <param name="client">客户端</param>
        /// <param name="log">日志内容</param>
        public static void Log(this ExceptionlessClient client, ExceptionlessLog log)
        {
            var uuid         = Uuid.Next();
            var eventBuilder = client.CreateLog(log.Message).AddTags(log.Tag);

            eventBuilder.AddObject(log.InputData);
            eventBuilder.AddObject(log.OutputData);
            eventBuilder.SetReferenceId(uuid);
            eventBuilder.SetSource(uuid);
            eventBuilder.SetProperty(log.PropertyName, log.Property);
            eventBuilder.SetVersion(uuid);
            eventBuilder.SetUserIdentity(log.UserId);
            eventBuilder.Submit();
        }
コード例 #11
0
        private static void WriteMessageToExceptionless(LogEntity logEntity, LogLevel logLevel)
        {
            var tag = "信息";

            if (logLevel == LogLevel.Warn)
            {
                tag = "警告";
            }
            if (logLevel == LogLevel.Trace)
            {
                tag = "跟踪";
            }
            ExceptionlessClient.CreateLog(logEntity.ToString(), logLevel)
            .AddTags(tag)
            .SetReferenceId(Guid.NewGuid().ToString("N"))
            .SetProperty("IpAddress", Computer.IpAddress)
            .SetProperty("MacAddress", Computer.MacAddress)
            .Submit();
        }
コード例 #12
0
        public static EventBuilder CreateFromLogEvent(this ExceptionlessClient client, LogEvent log)
        {
            var builder = log.Exception != null
                ? client.CreateException(log.Exception)
                : client.CreateLog(log.GetSource(), log.RenderMessage(), log.GetLevel());

            builder.Target.Date = log.Timestamp;
            if (log.Level == LogEventLevel.Fatal)
            {
                builder.MarkAsCritical();
            }

            if (!String.IsNullOrWhiteSpace(log.RenderMessage()))
            {
                builder.SetMessage(log.RenderMessage());
            }

            return(builder);
        }
コード例 #13
0
        public static EventBuilder CreateFromLogEvent(this ExceptionlessClient client, LogEventInfo ev)
        {
            var builder = ev.Exception != null?client.CreateException(ev.Exception) : client.CreateLog(ev.FormattedMessage);

            builder.Target.Date = ev.TimeStamp;
            builder.SetSource(ev.LoggerName);
            if (ev.Exception == null)
            {
                builder.AddObject(ev.Level.Name, "Level");
            }

            foreach (var p in ev.Properties)
            {
                builder.AddObject(p.Value, p.Key.ToString());
            }

            return(builder);
        }
コード例 #14
0
        public static EventBuilder CreateFromLogEvent(this ExceptionlessClient client, LoggingEvent ev)
        {
            var builder = ev.ExceptionObject != null?client.CreateException(ev.ExceptionObject) : client.CreateLog(ev.LoggerName, ev.RenderedMessage, ev.Level.Name);

            builder.Target.Date = ev.TimeStamp;

            if (!String.IsNullOrWhiteSpace(ev.RenderedMessage))
            {
                builder.SetMessage(ev.RenderedMessage);
            }

            if (ev.ExceptionObject != null)
            {
                builder.SetSource(ev.LoggerName);
            }

            var props = ev.GetProperties();

            foreach (var key in props.GetKeys().Where(key => !_ignoredEventProperties.Contains(key, StringComparer.OrdinalIgnoreCase)))
            {
                string propName = key;
                if (propName.StartsWith("log4net:"))
                {
                    propName = propName.Substring(8);
                }
                builder.SetProperty(propName, props[key]);
            }

            return(builder);
        }
コード例 #15
0
        /// <inheritdoc />
        /// <summary>
        /// Writes a log entry.
        /// </summary>
        /// <typeparam name="TState">The type of the state object.</typeparam>
        /// <param name="logLevel">Entry will be written on this level.</param>
        /// <param name="eventId">Id of the event.</param>
        /// <param name="state">The entry to be written. Can be also an object.</param>
        /// <param name="exception">The exception related to this entry.</param>
        /// <param name="formatter">Function to create a <see cref="T:System.String" /> message of the <paramref name="state" /> and <paramref name="exception" />.</param>
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (formatter == null)
            {
                throw new ArgumentNullException(nameof(formatter));
            }

            if (!IsEnabled(logLevel))
            {
                return;
            }

            string message = formatter(state, exception);

            if (String.IsNullOrEmpty(message) && exception == null)
            {
                return;
            }

            var builder = exception == null?_client.CreateLog(_source, message, logLevel.ToLogLevel()) : _client.CreateException(exception);

            builder.Target.Date = DateTimeOffset.Now;

            if (!String.IsNullOrEmpty(message))
            {
                builder.SetMessage(message);
            }

            if (exception != null)
            {
                builder.SetSource(_source);
            }

            // Add event id, if available
            if (eventId.Id != 0)
            {
                builder.SetProperty("EventId", eventId.Id);
            }

            // If within a scope, add scope's reference id
            if (ExceptionlessLoggingScope.Current != null)
            {
                builder.SetEventReference("Parent", ExceptionlessLoggingScope.Current.Id);
            }

            // The logging framework passes in FormattedLogValues, which implements IEnumerable<KeyValuePair<string, object>>;
            // add each property and value as individual objects for proper visibility in Exceptionless
            if (state is IEnumerable <KeyValuePair <string, object> > stateProps)
            {
                foreach (var prop in stateProps)
                {
                    // Logging the message template is superfluous
                    if (prop.Key != "{OriginalFormat}")
                    {
                        builder.SetProperty(prop.Key, prop.Value);
                    }
                }
            }
            else
            {
                // Otherwise, attach the entire object, using its type as the name
                builder.AddObject(state);
            }

            builder.Submit();
        }
コード例 #16
0
 public void EventLogDebug(Type source, string msg)
 {
     client.CreateLog(source.FullName, msg, LogLevel.Debug).Submit();
 }
コード例 #17
0
        public static EventBuilder CreateFromLogEvent(this ExceptionlessClient client, LogEventInfo ev)
        {
            var builder = ev.Exception != null?client.CreateException(ev.Exception) : client.CreateLog(ev.LoggerName, ev.FormattedMessage, ev.Level.Name);

            builder.Target.Date = ev.TimeStamp;

            if (!String.IsNullOrWhiteSpace(ev.FormattedMessage))
            {
                builder.SetMessage(ev.FormattedMessage);
            }

            if (ev.Exception != null)
            {
                builder.SetSource(ev.LoggerName);
            }

            foreach (var p in ev.Properties.Where(kvp => !_ignoredEventProperties.Contains(kvp.Key.ToString(), StringComparer.OrdinalIgnoreCase)))
            {
                builder.AddObject(p.Value, p.Key.ToString());
            }

            return(builder);
        }
コード例 #18
0
 public void Debug(string message, params string[] tags)
 {
     _Exceptionless.CreateLog(message, LogLevel.Debug)
     .AddTags(tags).Submit();
 }