Для чего нужны библиотеки журналов? - PullRequest
5 голосов
/ 27 августа 2010

Это может быть глупый вопрос, так как большая часть моего программирования состоит из прототипов научных исследований, проводимых одним человеком, и разработки библиотек относительно низкого уровня.Я никогда не программировал в целом в корпоративной среде.Я всегда задавался вопросом, каковы основные вещи, которые библиотеки журналов делают существенно проще, чем просто использование старых добрых операторов печати или вывода файла, простая логика программирования и несколько глобальных переменных, чтобы определить, насколько многословно все записывается?Откуда вы знаете, что несколько операторов печати или какой-то базовый вывод файла не обрежут его, а вам нужна настоящая библиотека журналирования?

Ответы [ 4 ]

2 голосов
/ 27 августа 2010

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

  1. Библиотеки журналирования вне полки легко подключить и играть менее чем за5 минут.
  2. Библиотеки журналов позволяют вести журналы на разных уровнях для одного оператора (FATAL, ERROR, WARN, INFO, DEBUG и т. Д.).
  3. И вы можете включить или выключить ведение журнала, чтобы получить большеменьше информации во время выполнения.
  4. Высокопоточные системы помогают разобраться, что и чем занимался поток.Библиотеки журналов могут регистрировать информацию о потоках, временных метках, которые не могут делать обычные операторы печати. ​​
  5. Большинство позволяет вам включать только части журнала, чтобы получить более подробную информацию.Таким образом, одна система может регистрировать отладочную информацию, а другая - только фатальные ошибки.
  6. Библиотеки журналов позволяют настраивать ведение журнала с помощью внешнего файла, поэтому его легко включать и выключать в производственной среде без необходимости перекомпиляции, развертывания,и т. д.
  7. Сторонние библиотеки обычно ведут журнал, поэтому вы можете управлять ими так же, как и другими частями вашей системы.
  8. Большинство библиотек позволяют записывать части или все ваши выражения в один или несколько файлов.на основе критериев.Таким образом, вы можете войти как в консоль, так и в файл журнала.
  9. Библиотеки журналов позволяют вращать журналы, поэтому в нем будут храниться несколько файлов журналов на основе множества различных критериев.Скажем, после того, как журнал получит 20 МБ, поверните его в другой файл и сохраните 10 файлов журнала, чтобы данные журнала всегда были размером 100 МБ.
  10. Некоторые операторы журнала можно компилировать или выводить (зависит от языка).
  11. Библиотеки журналов могут быть расширены для добавления новых функций.

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

2 голосов
/ 27 августа 2010

Они используются в средах, где требования к ведению журнала могут измениться, но стоимость изменения или развертывания нового исполняемого файла высока.(Даже если у вас есть исходный код, добавление однострочного изменения в журнале в программу может оказаться невозможным из-за внутренней бюрократии.)

Библиотеки журналирования предоставляют структуру, которую программа будет использовать для создания широкого спектраСообщения.Они могут быть описаны по источнику (например, объект регистратора, в который он впервые отправлен, часто соответствует классу, в котором произошло событие), серьезности и т. Д.

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

Выше описана идеальная структура ведения журнала, как я понимаю намерение;на практике я использовал их в Java и Python, и ни в одном из случаев я не нашел их достойными дополнительной сложности.: - (

1 голос
/ 27 августа 2010

Они для регистрации вещей.

Или, если быть более серьезным, для того, чтобы избавить вас от необходимости писать это самостоятельно, предоставляя гибкие возможности для хранения журналов (база данных, журнал событий, текстовый файл, CSV, отправляемый на удаленный веб-сервис, доставляемый пикси на бархатной подушке ) и о том, что регистрируется во время выполнения, вместо того, чтобы переопределять глобальную переменную и затем перекомпилировать.

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

0 голосов
/ 27 августа 2010

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

Конечно, этого можно достичь, имея глобальный уровень регистрации для каждой подсистемы, но для меня проще использовать какую-то "систему" для этого.

У меня, как правило, тоже есть среда 2D-журналирования; «Информация / Предупреждение / Ошибка» (и т. Д.) На одной оси и «AI / UI / Simulation / Networking» (и т. Д.) На другой. При этом я могу указать уровень ведения журнала, который я легко просматриваю для каждой подсистемы. Это на самом деле не так сложно, как только оно на месте, на самом деле это намного чище, чем if my_logging_level == DEBUG then print("An error occurred"); Plus, система ведения журнала может вставлять информацию о файлах / строках в сообщения, а затем, полностью придумав, вы можете легко перенаправить их на несколько целей файл, TTY, отладчик, сетевой сокет ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...