예제 #1
0
        protected void Application_Error(object sender, EventArgs e)
        {
            var httpContext = (sender as MvcApplication).Context;
            var httpRequest = httpContext != null ? httpContext.Request : null;
            var exception   = this.Server.GetLastError();

            var requestUrl   = httpRequest != null ? httpRequest.RawUrl : null;
            var clientIp     = httpRequest != null ? httpRequest.ServerVariables["REMOTE_ADDR"] : null;
            var rawUserAgent = httpRequest != null ? httpRequest.ServerVariables["HTTP_USER_AGENT"] : null;
            var rawHeaders   = httpRequest != null ? httpRequest.ServerVariables["ALL_RAW"] : null;
            var userId       = UserIdentityManager.GetActiveUserId(httpRequest.Cookies);

            new LinqRepository().LogError(exception, DateTime.Now, requestUrl, clientIp, rawUserAgent, rawHeaders, userId);
        }
예제 #2
0
        public static void LogErrorMessage(this IRepository repository, string message, HttpRequestBase request)
        {
            if (repository == null)
            {
                Trace.TraceError("[Logging:LogErrorMessage] Repository is null. Skipping logging.");
                return;
            }

            if (request == null)
            {
                const string requestIsNull = "Warning: HttpRequest is null, no context information is available. Message: ";
                repository.LogError(requestIsNull + message, DateTime.Now, null, null, null, null, null);
                return;
            }

            repository.LogError(
                message,
                DateTime.Now,
                request.RawUrl,
                request.ServerVariables["REMOTE_ADDR"],
                request.ServerVariables["HTTP_USER_AGENT"],
                request.ServerVariables["ALL_RAW"],
                UserIdentityManager.GetActiveUserId(request.Cookies));
        }