Exemple #1
0
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (!IsEnabled(logLevel))
            {
                return;
            }

            var task = Task.Factory.StartNew(() =>
            {
                var date  = DateTime.UtcNow.ToString("o");
                var ex    = exception != null ? exception.ToString().Replace(Environment.NewLine, " ") : string.Empty;
                var entry = $"[{date}]\t{logLevel.ToString()}\t{CategoryName}\t{state.ToString()}\t{ex}" + Environment.NewLine;

                if (!AppendBlob.Exists())
                {
                    AppendBlob.CreateOrReplace();
                }

                try
                {
                    using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(entry)))
                    {
                        AppendBlob.AppendBlock(stream);
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            });
        }
Exemple #2
0
        private void Log(MsLogLevel logLevel, string value)
        {
            switch (logLevel)
            {
            case MsLogLevel.Information:
                Logger.Info(value);
                break;

            case MsLogLevel.Error:
                Logger.Error(value);
                break;

            case MsLogLevel.Warning:
                Logger.Warning(value);
                break;

            case MsLogLevel.Debug:
                Logger.Debug(value);
                break;

            case MsLogLevel.Critical:
                Logger.Critical(value);
                break;

            case MsLogLevel.Trace:
                Logger.Trace(value);
                break;

            case MsLogLevel.None:
                break;

            default:
                throw new NotImplementedException(logLevel.ToString() + " is not implemented!");
            }
        }
Exemple #3
0
        public void Log <TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            var message = "";

            if (exception == null)
            {
                message = formatter(state, exception);
            }
            else
            {
                message = $"{formatter(state, exception)}  {exception.Message}  {exception.StackTrace}";
            }
            var log = new Log {
                Level = logLevel.ToString(), Message = message.Replace("\\", "/")
            };
            var logstr = JsonSerializer.Serialize(log);

            Console.WriteLine(logstr);
        }
        public IActionResult NLogTest(int Level)
        {
            // Test snippet only...

            /*
             * StringBuilder lsbGuids = new StringBuilder();
             * lsbGuids.AppendLine("GUID Sample Formats - BEGIN");
             * lsbGuids.AppendLine(string.Format("N --  {0}", Guid.NewGuid().ToString("N")));
             * lsbGuids.AppendLine(string.Format("D --  {0}", Guid.NewGuid().ToString("D")));
             * lsbGuids.AppendLine(string.Format("B --  {0}", Guid.NewGuid().ToString("B")));
             * lsbGuids.AppendLine(string.Format("P --  {0}", Guid.NewGuid().ToString("P")));
             * lsbGuids.AppendLine(string.Format("X --  {0}", Guid.NewGuid().ToString("X")));
             * lsbGuids.AppendLine("GUID Sample Formats - END");
             * _log.LogDebug("GUID Formats: {0}", lsbGuids.ToString());
             */

            Microsoft.Extensions.Logging.LogLevel llTestLevel = (Microsoft.Extensions.Logging.LogLevel)Level;
            string lsLogEntry = string.Format("Test-Value = {0}, Log-Level = {1}"
                                              , Guid.NewGuid().ToString("D")
                                              , llTestLevel.ToString()
                                              );

            ViewData["Message"] = string.Format("Wrote entry to log '{0}'", lsLogEntry);
            _log.Log(llTestLevel, lsLogEntry);
            return(View(viewName: "Index", model: new mlpoca.Models.NLogLevels()));

            // Legacy Code

            /*
             * Microsoft.Extensions.Logging.LogLevel llTestLevel = (Microsoft.Extensions.Logging.LogLevel)Level;
             * string lsGUID = Guid.NewGuid().ToString("D");
             * string lsLogEntry = string.Format("Test-Value = {0}, Log-Level = {1}", lsGUID, llTestLevel.ToString());
             *
             * _log.Log(llTestLevel, lsLogEntry);
             *
             * ViewData["Message"] = string.Format("Wrote entry to log '{0}'", lsLogEntry);
             * // return View("Index");
             * return View(viewName: "Index", model: new mlpoca.Models.NLogLevels());
             */
        }
Exemple #5
0
        void ILogger.Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (logLevel < Option.LogLevel)
            {
                return;
            }
            if (Option.DayFolder && ++cnt >= 100)
            {
                cnt = 0;
                var size = IOHelper.FolderDiskInfo(Option.LogPath);
                if (size.AvailableSize < Option.MinFreeSize)
                {
                    Option.disable = true;
                }
            }
            string Text() => $"{DateTime.Now:MM-dd HH:mm:ss.ffff} [{(eventId.Name ?? logLevel.ToString())}]\t{LogRecorder.GetMachineName()}({LogRecorder.GetUserName()}) [{eventId.Id:D4}({LogRecorder.GetRequestId()})]\t{formatter(state, exception)}";

            if (!Option.disable)
            {
                WriteFile("log", Text());
            }

            switch (logLevel)
            {
            case LogLevel.Warning:
                if (!Option.disable)
                {
                    WriteFile("warning", Text());
                }
                break;

            case LogLevel.Error:
                WriteFile("error", Text());
                break;

            case LogLevel.Critical:
                WriteFile("system", Text());
                break;
            }
        }
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (!IsEnabled(logLevel))
            {
                return;
            }

            var task = Task.Factory.StartNew(async() =>
            {
                var date  = DateTime.UtcNow.ToString("o");
                var ex    = exception != null ? exception.ToString().Replace(Environment.NewLine, " ") : string.Empty;
                var entry = $"[{date}]\t{logLevel.ToString()}\t{CategoryName}\t{state.ToString()}\t{ex}" + Environment.NewLine;

                try
                {
                    await MongoRepository.Insert(entry);
                }
                catch (Exception)
                {
                    throw;
                }
            });
        }
Exemple #7
0
        /// <inheritdoc />
        public void Log <TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (_name.StartsWith("Microsoft.EntityFrameworkCore") || !IsEnabled(logLevel))
            {
                return;
            }

            string message;

            if (formatter != null)
            {
                message = formatter(state, exception);
            }
            else
            {
                message = state.Stringify();

                if (exception != null)
                {
                    message += Environment.NewLine + exception.Stringify();
                }
            }

            if (string.IsNullOrEmpty(message))
            {
                return;
            }

            var log = new TLog
            {
                Message = message.Truncate(LogEntry.MaximumMessageLength),
                Date    = DateTime.UtcNow,
                Level   = logLevel.ToString(),
                Logger  = _name,
                Thread  = eventId.ToString(),
            };

            if (exception != null)
            {
                log.Exception = exception.ToString().Truncate(LogEntry.MaximumExceptionLength);
            }

            var httpContext = _services.GetRequiredService <IHttpContextAccessor>()?.HttpContext;

            if (httpContext != null)
            {
                log.Browser  = httpContext.Request.Headers["User-Agent"];
                log.Username = httpContext.User.Identity.Name;

                try
                {
                    log.HostAddress = httpContext.Connection.LocalIpAddress?.ToString();
                }
                catch (ObjectDisposedException)
                {
                    log.HostAddress = "Disposed";
                }

                log.Url = httpContext.Request.Path;
            }

            _entryQueue.Enqueue(log);
        }
Exemple #8
0
 public NLogLevel(Microsoft.Extensions.Logging.LogLevel pLevel)
 {
     Value = (int)pLevel;
     Name  = pLevel.ToString();
 }
Exemple #9
0
        public void Log <TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (!IsEnabled(logLevel))
            {
                return;
            }

            if (formatter == null)
            {
                throw new ArgumentNullException(nameof(formatter));
            }

            var logBuilder = new StringBuilder();
            var message    = formatter(state, exception);

            if (string.IsNullOrEmpty(message) && exception != null)
            {
                message = exception.Message;
            }

            SystemLog createEntity = new SystemLog()
            {
                Message     = CoreUtility.TruncateString(message, 512) ?? "Empty",
                FullMessage = CreateFullMessage(logLevel, eventId, message, exception) ?? "Empty",
                Level       = logLevel
            };

            if (_contextAccessor?.HttpContext != null)
            {
                createEntity.IpAddress   = _contextAccessor.HttpContext.GetCurrentIpAddress();
                createEntity.PageUrl     = _contextAccessor.HttpContext.GetThisPageUrl();
                createEntity.ReferrerUrl = _contextAccessor.HttpContext.GetUrlReferrer();
                createEntity.UserAgent   = _contextAccessor.HttpContext.Request?.Headers["User-Agent"];
            }

            _logtaskQueue.QueueBackgroundWorkItem(async token =>
            {
                Uri[] listNodes             = _elasticLogOptions.Nodes.Split(";").Select(q => new Uri(q)).ToArray();
                StaticConnectionPool pool   = new StaticConnectionPool(listNodes);
                ConnectionSettings settings = new ConnectionSettings(pool);
                settings.DefaultIndex($"log-{DateTime.Now.ToString("dd-MM-yyyy", CultureInfo.InvariantCulture)}");
                await(new ElasticClient(settings)).IndexDocumentAsync(createEntity);
            });

            string CreateFullMessage(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, string message, Exception exception)
            {
                var logBuilder = new StringBuilder();

                var logLevelString = logLevel.ToString();

                logBuilder.Append($"{DateTime.Now.ToString(new System.Globalization.CultureInfo("vi-VN"))} - {logLevelString} - {_name}");

                if (null != eventId && eventId.Id > 0)
                {
                    logBuilder.Append($" [ {eventId.Id} - {eventId.Name ?? "null"} ] ");
                }

                AppendAndReplaceNewLine(logBuilder, message);

                if (exception != null)
                {
                    logBuilder.Append(' ');
                    AppendAndReplaceNewLine(logBuilder, exception.ToString());
                }

                return(logBuilder.ToString());