NLog - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Я явно делаю что-то не так. ранее мне посоветовали эту библиотечку для лога. я с ней свыклась, подружилась и вообще очень довольна нашим с ней сотрудничеством. Только вот при попытке встроить её в новый проект я столкнулась с непреодолимыми трудностями. Во-первых, он отказывается работать со своим файлом конфигурации NLog.config. То бишь если я создаю программно таргеты и правила он еще работает немножечко, а вот если я оставляю только конфиг отказывается работать. А еще тестовые записи он пишет, а созданные мной отказывается. я честно проверяла код до буковки, все идентично. Это даже смешно, если бы не было так грустно. Из NuGet я установила: Nlog NLog.Config NLog.InstallNLogConfig NLog.Schema (он установился с одним из предыдущих) в конфиге NLog добавила
>
    
    
              layout="${longdate} ${aspnet-request:servervariable=URL} ${uppercase:${level}} ${message}" />
     
  >
 
  >
  
   
  >
ну что может быть проще? потом в своем проекте я создала
       //error logger
        private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
и вот пытаюсь его использовать
  logger.Trace("program start");
и не работает ( вот так работает
 var config = new NLog.Config.LoggingConfiguration();
 
            var logfile = new NLog.Targets.FileTarget() { FileName = "log.txt", Name = "logfile" };
 
            config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Debug, logfile));
 
            NLog.LogManager.Configuration = config;
          //  logger = LogManager.GetCurrentClassLogger();
            logger.Trace("Sample trace message");
            logger.Debug("Sample debug message");
            logger.Info("Sample informational message");
            logger.Warn("Sample warning message");
            logger.Error("Sample error message");
            logger.Fatal("Sample fatal error message");

            logger.Trace("program start");
причем последнее сообщение упорно не выводит. А если я все тестовые записи удаляю, оставляя последнее вообще не создает файл лога( собственно помогите пожалуйста помнять, что я делаю не так
Ладно, с последней мистикой я разобралась, в конфиге написала минимальный уровень debug, а сама пытаюсь добавить запись trace. Но в файле конфига-то я минимальный уровень trace указывала! почему ж он оттуда то не берет ?
Я даже добавила в конфиг "createDirs="true"" и это не помогло. а когда я добавляю в код
  //var logfile = new NLog.Targets.FileTarget()
            //{
            //    FileName = "${basedir}/logs/${level}.log",
            //    CreateDirs = true,
            //    Layout = "${longdate} | ${uppercase:${level}} | ${logger} | ${message}",
            //    Name = "logfile"
            //};
он выдает ошибку, что не может найти часть пути при записи в лог
А еще он игнорирует второе сообщение в команде! в функции logger.Trace() есть несколько перегрузок и в одной из них можно вписывать до 3-х стринговых переменных. Только вот в лог он пишет исключительно первую ( и исключения тоже не пережевывает( если ему попробовать подать
logger.Trace(ex, "something string");
он ничего не добавит в лог только текст, а исключение проигнорирует( это я тоже где-то в конфиге накосячила?

Решение задачи: «NLog»

textual
Листинг программы
<logger ... writeTo="File" />

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.333 из 5