在包装器中使用 NLog 时如何实现结构化日志记录 class
How to implement structured logging when using NLog in wrapper class
当 NLog 在包装器中时,我无法弄清楚如何使用结构化日志记录 class。我有一个 asp.net 网络应用程序调用我的 nlog 包装器 class。
它适用于常规日志记录 ex。 logger.Info("Gets to here.")
但我无法让它用于结构化日志记录调用,例如。 logger.Info("This is structured logging entry @{param1}", new {Status = "processing"})
这是我的 NLog(EventLog.LogManager) 包装器 class:
public static void Info(params object[] args)
{
private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
Logger.Log(LogLevel.Info, args);
//This is what I've tried to no avail.
//var ci = new CultureInfo("en-US");
//LogEventInfo le = LogEventInfo.Create(LogLevel.Info, Logger.Name, ci, args);
//le.Parameters = args;
//string test = le.FormattedMessage;
//string test1 = string.Format(le.Parameters[0].ToString(), le.Parameters[1].ToString());
//Logger.Log(typeof(LogManager), le);
}
这是我的 asp.net 调用上述方法的应用程序:
public ActionResult Index()
{
EventLog.LogManager.Info("Test @{param1}", new { OrderId = 2, Status = "Processing" });
return View();
}
如果有人能指出我正确的方向,将不胜感激。提前谢谢你。
试试改成这样:
namespace EventLog
{
public static class LogManager
{
private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
public static void Info(string message, params object[] args)
{
Logger.Info(message, args);
}
}
}
当 NLog 在包装器中时,我无法弄清楚如何使用结构化日志记录 class。我有一个 asp.net 网络应用程序调用我的 nlog 包装器 class。
它适用于常规日志记录 ex。 logger.Info("Gets to here.")
但我无法让它用于结构化日志记录调用,例如。 logger.Info("This is structured logging entry @{param1}", new {Status = "processing"})
这是我的 NLog(EventLog.LogManager) 包装器 class:
public static void Info(params object[] args)
{
private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
Logger.Log(LogLevel.Info, args);
//This is what I've tried to no avail.
//var ci = new CultureInfo("en-US");
//LogEventInfo le = LogEventInfo.Create(LogLevel.Info, Logger.Name, ci, args);
//le.Parameters = args;
//string test = le.FormattedMessage;
//string test1 = string.Format(le.Parameters[0].ToString(), le.Parameters[1].ToString());
//Logger.Log(typeof(LogManager), le);
}
这是我的 asp.net 调用上述方法的应用程序:
public ActionResult Index()
{
EventLog.LogManager.Info("Test @{param1}", new { OrderId = 2, Status = "Processing" });
return View();
}
如果有人能指出我正确的方向,将不胜感激。提前谢谢你。
试试改成这样:
namespace EventLog
{
public static class LogManager
{
private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
public static void Info(string message, params object[] args)
{
Logger.Info(message, args);
}
}
}