Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 7

Логгирование

30.01.2013, 05:57. Показов 3811. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

С недавних пор задумываюсь ввести логгирование для отслеживания работы программы. Точнее программ. Раньше логи никогда не использовал, пишутся ошибки в отдельную таблицу БД, ведётся журналирование по объектам (набор записей "датавремя-класс-переменная-значение"). Но когда надо разобраться с какой-то проблемой, лазить по этому журналу не очень удобно, хочется сразу увидеть: "пользователь1 нажал кнопку1, сформировалась заявка, отправлен на печать отчёт и т.п."

Программа корпоративная, ставится на много компов, постоянно обновляется, плюс есть веб-сайт со своими подпрограммками.

Прошу поделится опытом людей, имевших дело с логгированием. Смотрю в сторону log4net. Не хочу тут разжигать споры, какой логгер лучше, хочется просто понять философию логгирования. Читал и на хабре статьи и на других сайтах, но на конкретные вопросы хочется услышать конкретные ответы. Итак:

1. Вывод делать лучше в текстовый файл, а не в БД или EventLog?
2. Хотим эти логи хранить на сетевом диске. Конечно, лучше бы было хранить на локальном диске, где установлена программа, но тогда придётся бегать к юзерам, чтобы посмотреть эти логи. Не гуд. Но всё же правильным ли будет хранить логи в сетке или же это будет сильно тормозить систему? Или нужен другой подход?
3. Правильно ли будет использовать логи для вывода информации пользовталям, скажем по жизненному циклу заявки? Или же логи юзаются не для этого?
4. Я не понял один момент. Есть несколько уровней ведения логов. Один из них "Дебаг". После тестирования его лучше отключать? Ну в смысле, всё оттестировали, проверили, нашли баги, отключили ведение этого типа логов, программа стабильно проработала полгода и вдруг упала. А отследить почему упала - проблематично, потому как в трейс- и инфо-логах слишком мало информации. Понятно, что нагрузка лишняя, но смысл тогда логов...
5. Я так понял, надо создавать каждый день отдельный файл лога. А как лучше будет, в него пихать все логи "Дебаг", "Трейс", "Инфо" и т.п. или лучше разделить эти уровни на несколько файликов?
6. Где-то прочитал, что по сути, логи заменяют комментарии. Что вот тут мы "создаём заявку номер 44432", здесь мы "меняем водителя Петрова на водителя Иванова", здесь мы "Переносим заявку 33333 с 8-00 на 9-00", здесь вообще её удаляем. Правилен ли такой подход, что вообще нужно писать в логах?

Заранее спасибо всем, кто ответит.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2013, 05:57
Ответы с готовыми решениями:

Логгирование: запрограммировать возможность отслеживания последовательности действий на сервере
Пользуюсь log4net В данный момент передо мной стоит задача реализовать в клиент-серверном приложении логирование. Мне удалось реализовать...

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

Логгирование
Привет. Была задача реализовать метод, который сохраняет строку в файл. Соответственно, он принимает два параметра: первый - это строка,...

5
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
30.01.2013, 07:25
1. Зависит от требований к программе. Современные логгеры могут писать лог куда угодно. Могу посоветовать, в любом случае сделать логи на локальном диске, а потом, если необходимо еще в другие места.
4. Как минимум должен остаться Stack trace при падении. Если проблема повторяется и причину не удается повторить тогда debug/trace логи можно включить - для этого делают отдельный файл с настройками логгера.
5. Нет, лог-файлы должны делиться на логические части, а не по уровням логирования. Если делить на уровни - сложно будет отследить порядок логов. Иногда деление вообще не делают.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
30.01.2013, 09:54
2. Храните на локальном: логи нужны, как правило, тогда, когда приложение работает как-то не так. В этих случаях можно и сбегать к пользователю (а потом напинать вашему админу за то, что нет удаленного доступа к локальным дискам в домене).
3. Неправильно. Лог - это информация для последующей диагностики, если таковая понадобится.
В дополнение к сказнному выше о четвертом пункте: в трейсе как раз должно быть самое большое количество самой подробной информации. Если по уровню ДЕБАГ у вас объем получается больше, то что-то не так с использованием логгера в коде.
6. В логах обычно пишется изменение состояния программы для последующей диагностики, потому пихать туда лучше коротко и по делу, без философствования.
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 7
31.01.2013, 06:56  [ТС]
Спасибо за ответы, буду думать.

Цитата Сообщение от kolorotur Посмотреть сообщение
2. Храните на локальном: логи нужны, как правило, тогда, когда приложение работает как-то не так. В этих случаях можно и сбегать к пользователю (а потом напинать вашему админу за то, что нет удаленного доступа к локальным дискам в домене).
С одной стороны, мне кажется, что действительно лучше хранить логи на локальном диске. Но вот только чтобы получить общую картину работы программы (сколько было варнингов, сколько времени выполняется та или иная функция на разных компах, кто работал, сколько и что конкретно делал (получилось сделать) вчера, когда сервак подвисал) нужно лезть на каждый комп (из сотни) и выдёргивать логи. Намного удобнее для программеров, когда логи лежат в одном месте.

С записью в бд как минимум проблема: если произошёл обрыв связи, то ничего не запишется в лог.

Думаю, возможно, стоит делать запись логов из локальных файлов в бд при закрытии программы (раз в сутки точно вырубается) и при открытии (если программа в предыдущий раз завершилась аварийно). Чёрт его знает, насколько большими они получатся и сколько по времени это будет занимать...
0
 Аватар для ksk
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
31.01.2013, 08:11
Я веду как правило несколько логов.
1. Лог активности пользователей. В БД. Кто что когда с чем сделал. Чтобы потом не говорили "я ничего не делал, а оно стёрлось".
2. Лог исключений - локально. Потому что например если нет доступа к БД - мы не сможем записать об этом в БД.
3. Технологические логи одного приложения веду локально. Потому что это прилдложение, для которого так удобнее.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
31.01.2013, 18:16
Vixler, проблема мониторинга активности приложений легко решаема: большинство фреймворков для логирования (лично рекомендую NLog) поддерживают одновременную запись в несколько мест, в том числе и широковещательную UDP-рассылку, которую можно прослушивать на сервере и там же проводить анализ.
А в случае интересного поведения уже доставать локальные логи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.01.2013, 18:16
Помогаю со студенческими работами здесь

Логгирование
Кто работал в кодесисе, подскажите как можно записывать значения переменных изменяющихся в процессе работы программы в текстовый файл

Логгирование sip
Добрый вечер. Подскажит, можно ли програмно считать статистику вызывов с sip телефона напрямую, а не с сервера? То есть например...

Логгирование java
Добрый лень, помогите, пожалуйста, понять, как можно сделать следующее: - при каждом запуске программы создавать новый файл в текущем...

Логгирование java
Добрый день, подскажите, пожалуйста, как можно реализовать свой фильтр чтобы каждую пятую итерацию в for выражении записывать в файл...

Логгирование в программе на vb6.0
Есть ли возможность как то выводить в лог-файл все действия программы? Но так чтоб это было не так трудоёмко добавлять в уже готовую...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru