コード例 #1
0
 static KissLogConfiguration()
 {
     InternalHelpers.WrapInTryCatch(() =>
     {
         ModuleInitializer.Init();
     });
 }
コード例 #2
0
        public void Log(LogLevel logLevel, string message, string memberName = null, int lineNumber = 0, string memberType = null)
        {
            if (string.IsNullOrWhiteSpace(message))
            {
                return;
            }

            LogMessage logMessage = new LogMessage(new LogMessage.CreateOptions
            {
                CategoryName = CategoryName,
                LogLevel     = logLevel,
                Message      = message,
                MemberType   = memberType,
                MemberName   = memberName,
                LineNumber   = lineNumber
            });

            DataContainer.Add(logMessage);

            Guid?httpRequestId = DataContainer.HttpProperties == null ? (Guid?)null : DataContainer.HttpProperties.Request.Id;

            InternalHelpers.WrapInTryCatch(() =>
            {
                NotifyOnMessage.Notify(logMessage, httpRequestId);
            });
        }
コード例 #3
0
        public static void NotifyListeners(IEnumerable <Logger> loggers)
        {
            if (loggers == null || !loggers.Any())
            {
                return;
            }

            InternalHelpers.WrapInTryCatch(() =>
            {
                NotifyFlush.Notify(loggers.ToArray());
            });
        }
コード例 #4
0
        public static void NotifyListeners(Logger logger)
        {
            if (logger == null)
            {
                return;
            }

            InternalHelpers.WrapInTryCatch(() =>
            {
                NotifyFlush.Notify(new[] { logger });
            });
        }
コード例 #5
0
        public static FlushLogArgs Create(Logger[] loggers)
        {
            if (loggers == null || !loggers.Any())
            {
                throw new ArgumentNullException();
            }

            Logger defaultLogger = loggers.FirstOrDefault(p => p.CategoryName == Constants.DefaultLoggerCategoryName) ?? loggers.First();

            var options = new FlushLogArgs.CreateOptions
            {
                MessagesGroups         = GetLogMessages(loggers),
                Exceptions             = GetExceptions(loggers),
                Files                  = GetFiles(loggers),
                CustomProperties       = GetCustomProperties(loggers),
                IsCreatedByHttpRequest = defaultLogger.DataContainer.LoggerProperties.IsManagedByHttpRequest
            };

            HttpProperties httpProperties = defaultLogger.DataContainer.HttpProperties;

            if (httpProperties == null)
            {
                httpProperties = new HttpProperties(new HttpRequest(new HttpRequest.CreateOptions
                {
                    HttpMethod    = "GET",
                    Url           = UrlParser.GenerateUri(null),
                    MachineName   = InternalHelpers.GetMachineName(),
                    StartDateTime = defaultLogger.DataContainer.DateTimeCreated
                }));
            }

            if (httpProperties.Response == null)
            {
                int statusCode = options.Exceptions.Any() ? (int)HttpStatusCode.InternalServerError : (int)HttpStatusCode.OK;
                httpProperties.SetResponse(new HttpResponse(new HttpResponse.CreateOptions
                {
                    StatusCode = statusCode
                }));
            }

            int?explicitStatusCode = GetExplicitStatusCode(loggers);

            if (explicitStatusCode.HasValue)
            {
                httpProperties.Response.SetStatusCode(explicitStatusCode.Value);
            }

            options.HttpProperties = httpProperties;

            return(new FlushLogArgs(options));
        }
コード例 #6
0
        private static FlushLogArgs CreateFlushArgsForListener(Logger defaultLogger, ILogListener listener, FlushLogArgs defaultArgs, string defaultArgsJson, List <LoggerFile> defaultFiles)
        {
            FlushLogArgs args = JsonConvert.DeserializeObject <FlushLogArgs>(defaultArgsJson);

            string inputStream = null;

            if (!string.IsNullOrEmpty(defaultArgs.WebRequestProperties.Request.InputStream))
            {
                if (KissLogConfiguration.Options.ApplyShouldLogRequestInputStream(defaultLogger, listener, defaultArgs))
                {
                    inputStream = defaultArgs.WebRequestProperties.Request.InputStream;
                }
            }

            args.WebRequestProperties.Request.Headers         = defaultArgs.WebRequestProperties.Request.Headers.Where(p => KissLogConfiguration.Options.ApplyShouldLogRequestHeader(listener, defaultArgs, p.Key)).ToList();
            args.WebRequestProperties.Request.Cookies         = defaultArgs.WebRequestProperties.Request.Cookies.Where(p => KissLogConfiguration.Options.ApplyShouldLogRequestCookie(listener, defaultArgs, p.Key)).ToList();
            args.WebRequestProperties.Request.QueryString     = defaultArgs.WebRequestProperties.Request.QueryString.Where(p => KissLogConfiguration.Options.ApplyShouldLogRequestQueryString(listener, defaultArgs, p.Key)).ToList();
            args.WebRequestProperties.Request.FormData        = defaultArgs.WebRequestProperties.Request.FormData.Where(p => KissLogConfiguration.Options.ApplyShouldLogRequestFormData(listener, defaultArgs, p.Key)).ToList();
            args.WebRequestProperties.Request.ServerVariables = defaultArgs.WebRequestProperties.Request.ServerVariables.Where(p => KissLogConfiguration.Options.ApplyShouldLogRequestServerVariable(listener, defaultArgs, p.Key)).ToList();
            args.WebRequestProperties.Request.Claims          = defaultArgs.WebRequestProperties.Request.Claims.Where(p => KissLogConfiguration.Options.ApplyShouldLogRequestClaim(listener, defaultArgs, p.Key)).ToList();
            args.WebRequestProperties.Request.InputStream     = inputStream;

            args.WebRequestProperties.Response.Headers = defaultArgs.WebRequestProperties.Response.Headers.Where(p => KissLogConfiguration.Options.ApplyShouldLogResponseHeader(listener, defaultArgs, p.Key)).ToList();

            List <LogMessagesGroup> messages = new List <LogMessagesGroup>();

            foreach (var group in defaultArgs.MessagesGroups)
            {
                messages.Add(new LogMessagesGroup
                {
                    CategoryName = group.CategoryName,
                    Messages     = group.Messages.Where(p => listener.Parser.ShouldLog(p, listener)).ToList()
                });
            }

            args.MessagesGroups = messages;

            List <LoggerFile> files        = defaultFiles.ToList();
            LoggerFile        responseFile = GetResponseFile(files);

            if (responseFile != null && !InternalHelpers.ShouldLogResponseBody(defaultLogger, listener, defaultArgs))
            {
                files.Remove(responseFile);
            }

            args.Files = files;

            return(args);
        }
コード例 #7
0
        public Logger(string categoryName = null, string url = null)
        {
            Id            = Guid.NewGuid();
            CategoryName  = string.IsNullOrWhiteSpace(categoryName) ? Constants.DefaultLoggerCategoryName : categoryName;
            DataContainer = new LoggerDataContainer(this);

            HttpProperties httpProperties = string.IsNullOrWhiteSpace(url) ? null : HttpPropertiesFactory.Create(url);

            if (httpProperties != null)
            {
                DataContainer.SetHttpProperties(httpProperties);

                InternalHelpers.WrapInTryCatch(() =>
                {
                    NotifyBeginRequest.Notify(httpProperties.Request);
                });
            }
        }