|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
|||||||||||
Как правильно настроить логирование в Nlog?09.12.2016, 15:32. Показов 27128. Ответов 11
ИСПОЛЬЗУЕТСЯ: C#, Visual Studio 2015
Как сделать, чтобы каждое действие в программе записывалось в лог. ПРИМЕР. - клик по кнопке; - поиск элементов; - выполняется метод "метод 1"; - переменная "n" приняла значение "значение 1"; - ошибка "ошибка 1" и т.д. Всё описанный перечень описывается в файл с фиксирование даты и времени. Попробовал это реализовать в Nlog, но что-то не очень. КОД основного КЛАССА
1. Как можно логирование в приведённом мной формате? 2. Как можно логирование в приближённом формате к приведённом мной? 3. Как можно вообще правильно сделать логирование? PS C# пока только осваиваю, поэтому прошу делать поправку на неточности в терминологии и постановке вопроса
0
|
|||||||||||
| 09.12.2016, 15:32 | |
|
Ответы с готовыми решениями:
11
Как настроить логирование доступа к шарам ? Как настроить логирование запросов больше 5 секунд? |
|
.NET senior
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
||||||
| 09.12.2016, 17:27 | ||||||
|
zakaz_77, чтобы NLog начал что-либо куда-либо логировать, нужно добавить в проект файл NLog.config, установить для него свойство "copy to output directory" в true. Пример содержимого конфиг-файла:
Кликните здесь для просмотра всего текста
1
|
||||||
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
|
| 09.12.2016, 18:40 [ТС] | |
|
bax_tang,
Забыл упомянуть при начальных настройках NLog.config лог появляется ввиде: 2016/12/09 14:48:15.474|Trace|logger.Trace 2016/12/09 14:48:15.474|Debug|logger.Debug 2016/12/09 14:48:15.474|Info|logger.Info 2016/12/09 14:48:15.474|Warn|logger.Warn 2016/12/09 14:48:15.474|Error|logger.Error 2016/12/09 14:48:15.474|Fatal|logger.Fatal после внесения настроек согласно ваших рекомендаций, логирование перестало работать. Выдаёт предупреждения. 1. Атрибут "deleteOldFileOnStartup" недействителен: значение "True" недействительно с точки зрения его типа данных "http://www.w3.org/2001/XMLSchema:boolean" — Строка "True" не является допустимым значением Boolean. 2. Атрибут "KeepFileOpen" не объявлен. как исправить?
0
|
|
|
.NET senior
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
|
| 09.12.2016, 19:08 | |
|
zakaz_77, True изменить на true, KeepFileOpen можно вообще удалить. В секции Rules оставить только вторую строку с minLevel = Trace.
Для изменения формата строки в лог-файле необходимо указать значение атрибута layout (разметка) в элементе target. Например, по-умолчанию используется вот такой формат разметки: ${longdate}|${level:uppercase=true}|${lo gger}|${message} Официальная вики по NLog на GitHub
1
|
|
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
||||||
| 09.12.2016, 20:27 [ТС] | ||||||
|
bax_tang,
изменил согласно предложенных вами замечаний. Лог имеет такой же вид 2016-12-09 20:04:23.6917 DEBUG log Form1 2016-12-09 20:04:23.7717 INFO log Form1 2016-12-09 20:04:23.7717 WARN log Form1 2016-12-09 20:04:23.7717 ERROR log Form1 2016-12-09 20:04:23.7747 FATAL log Form1 2016-12-09 20:04:36.8874 DEBUG logger.Debug 2016-12-09 20:04:36.8874 INFO logger.Info 2016-12-09 20:04:36.8874 WARN logger.Warn 2016-12-09 20:04:36.8874 ERROR logger.Error 2016-12-09 20:04:36.8874 FATAL logger.Fatal Он так и должен выглядеть или можно всё таки детализировать, согласно вопроса в ТС? ПРИЛАГАЮ КОД
0
|
||||||
|
.NET senior
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
||||||
| 09.12.2016, 23:15 | ||||||
|
zakaz_77, вариант конфиг-файла, который используется в проектах у меня на работе:
Кликните здесь для просмотра всего текста
Формат результирующего лог-файла: Кликните здесь для просмотра всего текста
2016/12/06 15:41:49.335 | INFO | Topshelf v4.0.0.0, .NET Framework v4.0.30319.42000 2016/12/06 15:41:49.352 | INFO | Service configuration initializing started... 2016/12/06 15:41:49.457 | INFO | Service configuration initialized successfully. 2016/12/06 15:41:49.457 | DEBUG | Running as a console application, creating the console host. 2016/12/06 15:41:49.474 | DEBUG | Starting up as a console application
1
|
||||||
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
||||||
| 09.12.2016, 23:26 [ТС] | ||||||
|
Я правильно понял, что дополнительно нужно по всему коду в необходимых местах разместить сообщение о логировании?
У меня оно как-то так выглядит
0
|
||||||
|
.NET senior
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
|
| 09.12.2016, 23:39 | |
|
zakaz_77, правильно поняли; у меня оно выглядит аналогичным образом.
Да, по всему коду логгеры понатыканы - не очень красиво, конечно, зато работает именно так, как нужно.
1
|
|
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
||||||
| 10.12.2016, 10:16 [ТС] | ||||||
|
bax_tang,
Есть другие инструменты, чтобы где-то, что-то подключил (прописал) один раз и всё, что делаешь в процессе программы(вводишь текст в Текстбокс, нажимаешь на кнопки) всё пишется в лог? Нашёл пример NLog.Config. Теперь лог выглядит так 2016-12-10 08:25:01.8803 rsh.Form1.button1_Click Trace: сообщение 1 Form1 Button.OnClick => Control.OnClick => Form1.button1_Click Это не то, что хотелось, но похоже. Достаточно оставить Form1.button1_Click ВОПРОС 1. Если я правильно понял это зависит от layout? 2. Как настроить layout, чтобы он выдавал сообщения такого рода ? КОД НОВОГО NLog.Config.
0
|
||||||
|
.NET senior
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
|
| 10.12.2016, 12:16 | |
Сообщение было отмечено zakaz_77 как решение
Решение
zakaz_77, Вы хотите каким-либо простым образом реализовать не самое тривиальное поведение.
Ключевой момент в том, что элементы управления Windows Forms понятия не имеют о том, какие события Вы хотите логировать, а какие - нет, и уж точно не знают о выбранном Вами логгере. Так что так или иначе придется заниматься ручным кодированием. Самый простой вариант, который я вижу - наследование от стандартных классов элементов управления и перегрузка методов-инициаторов событий с реализацией записи соответствующего сообщения в лог. Соответственно, создавать потом также нужно будет эти элементы управления. Либо можно повесить обработчик на событие Form.Controls.ControlAdded и в зависимости от типа элемента управления добавлять обработчики нужных событий, в которых уже реализовать запись в лог (я бы выбрал этот вариант). Добавлено через 1 час 21 минуту Вышла оговорка, имелось в виду вот это событие.
1
|
|
|
0 / 0 / 0
Регистрация: 04.08.2019
Сообщений: 8
|
|
| 02.11.2019, 16:28 | |
|
Кто может помочь, смотрите я создал директорию и в ней будут хранится логи, а как можно сделать что бы эти логи отправлались куда-то на хостинг допустим?
0
|
|
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|
| 02.11.2019, 23:55 | |
|
само логирование в уделенную точку или закидывать файлики с периодичностью куда-то?
0
|
|
| 02.11.2019, 23:55 | |
|
Помогаю со студенческими работами здесь
12
Настроить логирование в веб проекте Как в веб сервере Apache (ОС Linux Ubuntu) настроить логирование таким образом, чтоб при любом запросе веб-се Не получается настроить логирование с slf4 и log4j Как правильно настроить Wi-Fi сеть? COM-порт, как правильно настроить Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|