Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/55: Рейтинг темы: голосов - 55, средняя оценка - 4.71
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44

NLog отказывается работать

03.04.2018, 13:52. Показов 11003. Ответов 9

Студворк — интернет-сервис помощи студентам
Добрый день!
Я явно делаю что-то не так. ранее мне посоветовали эту библиотечку для лога. я с ней свыклась, подружилась и вообще очень довольна нашим с ней сотрудничеством.

Только вот при попытке встроить её в новый проект я столкнулась с непреодолимыми трудностями. Во-первых, он отказывается работать со своим файлом конфигурации NLog.config. То бишь если я создаю программно таргеты и правила он еще работает немножечко, а вот если я оставляю только конфиг отказывается работать. А еще тестовые записи он пишет, а созданные мной отказывается. я честно проверяла код до буковки, все идентично. Это даже смешно, если бы не было так грустно.

Из NuGet я установила:
Nlog
NLog.Config
NLog.InstallNLogConfig
NLog.Schema (он установился с одним из предыдущих)

в конфиге NLog добавила
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
<targets>
    
    <target xsi:type="File" name="file" fileName="${basedir}/logs/${shortdate}.log"
              layout="${longdate} ${aspnet-request:servervariable=URL} ${uppercase:${level}} ${message}" />
     
  </targets>
 
  <rules>
  
   <logger name="*" minlevel="Trace" writeTo="File" />
  </rules>

ну что может быть проще?
потом в своем проекте я создала
C#
1
2
       //error logger
        private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
и вот пытаюсь его использовать
C#
1
  logger.Trace("program start");
и не работает (

вот так работает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 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");
причем последнее сообщение упорно не выводит. А если я все тестовые записи удаляю, оставляя последнее вообще не создает файл лога(
собственно помогите пожалуйста помнять, что я делаю не так

Добавлено через 15 минут
Ладно, с последней мистикой я разобралась, в конфиге написала минимальный уровень debug, а сама пытаюсь добавить запись trace.
Но в файле конфига-то я минимальный уровень trace указывала! почему ж он оттуда то не берет ?

Добавлено через 14 минут
Я даже добавила в конфиг "createDirs="true"" и это не помогло.
а когда я добавляю в код
C#
1
2
3
4
5
6
7
  //var logfile = new NLog.Targets.FileTarget()
            //{
            //    FileName = "${basedir}/logs/${level}.log",
            //    CreateDirs = true,
            //    Layout = "${longdate} | ${uppercase:${level}} | ${logger} | ${message}",
            //    Name = "logfile"
            //};
он выдает ошибку, что не может найти часть пути при записи в лог

Добавлено через 32 минуты
А еще он игнорирует второе сообщение в команде! в функции logger.Trace() есть несколько перегрузок и в одной из них можно вписывать до 3-х стринговых переменных. Только вот в лог он пишет исключительно первую (
и исключения тоже не пережевывает(
если ему попробовать подать
C#
1
logger.Trace(ex, "something string");
он ничего не добавит в лог только текст, а исключение проигнорирует(
это я тоже где-то в конфиге накосячила?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2018, 13:52
Ответы с готовыми решениями:

DirectX отказывается работать в 64 битах
Здравствуйте! Windows 7 (64 bit) + VS 2008 + DirectX SDK (DXSDK_Jun10). Процессор Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz. Создаю проект C#...

Проблема с ASPHTTP. Истек срок trail version, она отказывается работать
Занрузил trail фasphttp.dll, зарегистрировал на сервере, работала. Истек срок trail version, она отказывается работать. Сейчас есть новая...

ASP отказывается работать: The server has encountered an error while loading an application during the processing of your request...
Windows 2000 Advanced Server + IIS. Всё вроде включено и настроено а пишет: Server Application Error The server has encountered an...

9
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.04.2018, 13:59
Цитата Сообщение от KellyDink Посмотреть сообщение
ну что может быть проще?
Действительно!
Посмотрите внимательнее:
XML
1
<target ... name="file"
XML
1
<logger ... writeTo="File" />
Регистр имеет значение.
0
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
03.04.2018, 14:22  [ТС]
спасибо! поменяла!
но не помогло(
все так же отказывается записывать в лог с конфигурацией из файла.
а программно не хочет создавать папку(
0
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
19.04.2018, 09:38  [ТС]
Я нашла свою проблему! только я не знаю, как ее решить(

у меня почему-то при сборке не копируется файл NLog.config в папку Debug/Release =(
Пакет Nlog.IntallLogConfig у меня стоит.
Если копировать в папочку самостоятельно, то все работает правильно.

Собственно вопрос: что я делаю не так!? как заставить файлик копироваться?
0
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
19.04.2018, 12:31
в свойствах файла
Изображения
 
1
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
19.04.2018, 15:29  [ТС]
потрясающе) спасибо большое!

может Вы еще мне расскажите, как мне заставить его принимать вторую стринговую переменную?

C#
1
logger.Trace("some string", "Some another string");
и вот такая перегрузка не работает, где ex - это исключение. оно пишется, а стринговая переменная нет(
C#
1
logger.Error(ex, "something strig");
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
19.04.2018, 16:33
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/// <summary>
        /// Writes the diagnostic message at the <c>Trace</c> level using the specified parameters.
        /// </summary>
        /// <param name="message">A <see langword="string" /> containing format items.</param>
        /// <param name="args">Arguments to format.</param>
        [MessageTemplateFormatMethod("message")]
void Trace([Localizable(false)] string message, params object[] args);
 
/// <summary>
        /// Writes the diagnostic message and exception at the <c>Error</c> level.
        /// </summary>
        /// <param name="message">A <see langword="string" /> to be written.</param>
        /// <param name="exception">An exception to be logged.</param>
void Error(Exception exception, [Localizable(false)] string message);
перегружка для Trace ожидает формат сообщения и его параметры. Т.е. аля

C#
1
logger.Trace("some string {0}", "Some another string");
запишется одно сообщение some string Some another string
1
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
19.04.2018, 19:31  [ТС]
ыыыы спасибо)
кстати logger.Trace("so {0} {1}", "string1", "string2"); записывает целых 3 строки

Добавлено через 41 минуту
Просто я вот все-равно не пойму! а зачем может понадобится такой способ добавления аргументов?

то бишь, если уж я пишу стринговую запись в trtace я хочу, чтобы она там была записана.
непонятно(
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
19.04.2018, 20:04
Цитата Сообщение от KellyDink Посмотреть сообщение
Просто я вот все-равно не пойму! а зачем может понадобится такой способ добавления аргументов?
Довольно стандартное форматирование сообщения c передачей шаблона и параметров (не обязательно строковых)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static void Main()
    {
        var date = DateTime.Now;
        var user = new User{ Login = "Wolfdp", Id = Guid.NewGuid() };
        Console.Write(string.Format("Date: {0}; User: {1}; Message = {2}",
                     date,
                     user,
                     "Nya!"));
        
    }
    
    public class User
    {
        public string Login{get;set;}
        public Guid Id{get;set;}
        
        public override string ToString()
        {
        return Login + " #" + Id.ToString();
        }
    }
Code
1
Date: 4/19/2018 5:03:01 PM; User: Wolfdp #0c1431d2-d0da-4c01-9fcd-f77c72ca91e8; Message = Nya!
1
 Аватар для KellyDink
6 / 6 / 0
Регистрация: 04.01.2012
Сообщений: 182
Записей в блоге: 44
20.04.2018, 09:39  [ТС]
в таком случае, все встает на свои места! спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.04.2018, 09:39
Помогаю со студенческими работами здесь

Метод Split() отказывается работать
Описание программы: Поступает на вход текстовый файл в формате(слово + &quot; &quot; + число)(пример на фото). Программа должна повторяющиеся слова...

Help. Компьютер отказывается работать!
Добрый день, распишу все подробно, надеюсь на помощь. Вчера отошел от компьютера оставив его на минут 20 работающим. Вернувшись, тронув...

Alarm отказывается работать
Всем привет. Уже около двух часов бьюсь с проблемой, перерыл весь инет вдоль и поперек, и все равно не могу понять, что же не так я...

Микрофон отказывается работать
Здравствуйте! Постоянная проблема с микрофоном... сил моих нет уже, честно говоря... Нашему компьютеру 5 лет (старичок, в принципе)....

Отказывается работать в сети
Добрый день. На данный момент такая проблема. Имеется комп. Суть его работы проста. Но он должен работать по сети. Так во сама...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru