Что записать в файл журнала?

Мой вопрос прост: что писать в журнал. Существуют ли какие-либо соглашения? Что мне нужно внести?

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

У меня уже есть некоторые идеи, такие как временная метка, уникальный идентификатор для каждой функции / метода и т. Д. Я бы хотел иметь несколько уровней журнала, таких как трассировка / отладка, информация, ошибки / предупреждения.

Используете ли вы некоторые предварительно отформатированные ресурсы журнала?

спасибо

  • Загрузка файлов .RData в Python
  • Почему мой микшер PyGame не звучит ,?
  • Передача синтаксиса среза Python вокруг функций
  • Что эквивалентно конкатенации строк CPython в C ++?
  • Как мне сжать сжатие строки в Python?
  • Расположение элементов в Python
  • Удалить все символы un utf-8 из строки
  • Как удалить Python2.6
  • 7 Solutions collect form web for “Что записать в файл журнала?”

    Вот несколько советов по содержанию:

    • отметка времени
    • сообщение
    • тип сообщения журнала (например, ошибка, предупреждение, трассировка, отладка)
    • thread id (так что вы можете определить файл журнала из многопоточного приложения)

    Рекомендации по внедрению:

    • Поместите мьютекс вокруг метода записи, чтобы вы могли быть уверены, что каждая запись является потокобезопасной и имеет смысл.
    • Одновременно отправьте 1 сообщение в файл журнала и укажите тип сообщения журнала каждый раз. Затем вы можете указать тип ведения журнала, который вы хотите запустить при запуске программы.
    • Не используйте буферизацию в файле или не используйте флеш часто в случае сбоя программы.

    Изменить: я только заметил, что вопрос был помечен Python, поэтому, пожалуйста, см. Ответ С. Лотта перед моим. Этого может быть достаточно для ваших нужд.

    Это очень приятно и уже реализовано.

    Прочтите это: http://docs.python.org/library/logging.html


    редактировать

    «легко разобрать, читать», как правило, противоречивы. Английский – легко читается, трудно разобрать. XML – легко разобрать, трудно читать. Нет формата, который позволяет легко читать и легко анализировать. Некоторые форматы журналов «не ужасны для чтения, а не невозможны для синтаксического анализа».

    Некоторые люди создают несколько обработчиков, так что один журнал имеет несколько форматов: сводку для чтения людей и версию XML для автоматического разбора.

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

    Важная информация о файле журнала – «greppability». Постарайтесь предоставить всю вашу информацию в одной строке с правильными идентификаторами строк, которые являются уникальными (также в радиусе) для определенного условия. Что касается метки времени, используйте стандарт ISO-8601, который хорошо сортируется.

    Хорошая идея – посмотреть на программное обеспечение для анализа журналов. Если вы не планируете писать самостоятельно, вы, вероятно, захотите использовать существующий пакет анализа журналов, такой как Analog. Если это так, вы, вероятно, захотите создать выход журнала, который будет достаточно похож на форматы, которые он принимает. Это позволит вам создавать приятные графики и графики с минимальными усилиями!

    На мой взгляд, наилучшим подходом является использование существующих журнальных библиотек, таких как log4j (или его варианты для других языков) . Это дает вам контроль над тем, как ваши сообщения отформатированы, и вы можете изменить его, не касаясь своего кода. Он следует лучшим методам, надежным и используемым миллионами пользователей. Конечно, вы можете написать свою собственную систему ведения журнала, но это было бы очень странно, если вам не нужно что-то очень специфическое. В любом случае, пройдите по их документации и посмотрите, как там представлены отчеты журнала.

    Проверьте log4py – портированная версия Python log4j, я думаю, что есть несколько реализаций для Python.

    timeStamp, т.е. DateTime YYYY / MM / DD: HH: mm: ss: ms User Thread ID Имя функции Сообщение / Сообщение об ошибке / Сообщение о успешной работе / Функция Trace

    Имейте это в формате XML, и вы можете легко написать для него парсер.

    <log> <logEntry DebugLevel="0|1|2|3|4|5...."> <TimeStamp format="YYYY/MM/DD:HH:mm:ss:ms" value="2009/04/22:14:12:33:120" /> <ThreadId value="" /> <FunctionName value="" /> <Message type="Error|Success|Failure|Status|Trace"> Your message goes here </Message> </logEntry> </log> 

    Библиотека протоколов Python является потокобезопасной для отдельных потоков процессов.

    Python - лучший язык программирования в мире.