Как реализовать структурированное ведение журнала при использовании NLog в классе-обёртке - PullRequest
0 голосов
/ 26 сентября 2019

У меня проблемы с выяснением того, как я могу использовать структурированное ведение журнала, когда NLog находится в классе-оболочке.У меня есть веб-приложение asp.net, которое вызывает мой класс оболочки nlog.

Работает нормально при обычной регистрации ex.logger.Info("Gets to here.") но я не могу заставить его работать для структурированных звонков.logger.Info("This is structured logging entry @{param1}", new {Status = "processing"})

Это мой класс Wrapper для NLog (EventLog.LogManager):

    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();
    }

Если кто-нибудь и укажет мне правильное направление, это будет с благодарностью.Заранее спасибо.

1 Ответ

1 голос
/ 26 сентября 2019

Попробуйте перейти на это:

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);
        }
    }
}
...