|
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
|
|
| 30.01.2013, 05:57 | |
|
Ответы с готовыми решениями:
5
Логгирование: запрограммировать возможность отслеживания последовательности действий на сервере Логгирование операций с базой данных Логгирование |
|
|
|
| 30.01.2013, 07:25 | |
|
1. Зависит от требований к программе. Современные логгеры могут писать лог куда угодно. Могу посоветовать, в любом случае сделать логи на локальном диске, а потом, если необходимо еще в другие места.
4. Как минимум должен остаться Stack trace при падении. Если проблема повторяется и причину не удается повторить тогда debug/trace логи можно включить - для этого делают отдельный файл с настройками логгера. 5. Нет, лог-файлы должны делиться на логические части, а не по уровням логирования. Если делить на уровни - сложно будет отследить порядок логов. Иногда деление вообще не делают.
0
|
|
|
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 [ТС] | ||
|
Спасибо за ответы, буду думать.
С записью в бд как минимум проблема: если произошёл обрыв связи, то ничего не запишется в лог. Думаю, возможно, стоит делать запись логов из локальных файлов в бд при закрытии программы (раз в сутки точно вырубается) и при открытии (если программа в предыдущий раз завершилась аварийно). Чёрт его знает, насколько большими они получатся и сколько по времени это будет занимать...
0
|
||
|
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
|
|
| 31.01.2013, 08:11 | |
|
Я веду как правило несколько логов.
1. Лог активности пользователей. В БД. Кто что когда с чем сделал. Чтобы потом не говорили "я ничего не делал, а оно стёрлось". 2. Лог исключений - локально. Потому что например если нет доступа к БД - мы не сможем записать об этом в БД. 3. Технологические логи одного приложения веду локально. Потому что это прилдложение, для которого так удобнее.
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 31.01.2013, 18:16 | |
|
Vixler, проблема мониторинга активности приложений легко решаема: большинство фреймворков для логирования (лично рекомендую NLog) поддерживают одновременную запись в несколько мест, в том числе и широковещательную UDP-рассылку, которую можно прослушивать на сервере и там же проводить анализ.
А в случае интересного поведения уже доставать локальные логи.
0
|
|
| 31.01.2013, 18:16 | |
|
Помогаю со студенческими работами здесь
6
Логгирование Логгирование sip Логгирование java Логгирование java
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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. Пошагово создадим проект для загрузки изображения. . .
|