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; } }); }
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!"); } }
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()); */ }
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; } }); }
/// <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); }
public NLogLevel(Microsoft.Extensions.Logging.LogLevel pLevel) { Value = (int)pLevel; Name = pLevel.ToString(); }
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());