Какой смысл использовать каркас журналирования? - PullRequest
17 голосов
/ 28 сентября 2008

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

Какова цель сторонней среды ведения журналов, такой как log4net? Это потокобезопасность с записью операций записи или я что-то упустил?

Ответы [ 7 ]

21 голосов
/ 28 сентября 2008

Это отличный вопрос.

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

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

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

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

Но на самом деле первый ответ самый лучший; писать свои собственные очень мало пользы и целый ряд недостатков.

3 голосов
/ 28 сентября 2008

Вы можете захотеть переключиться на запись в БД для какого-либо сообщения или систему оповещения, которая сообщает бедному человеку о поддержке

Что еще более важно, большинство каркасов журналирования позволяют вам указывать уровень логирования различных классов, поэтому вам не нужно вырезать новый двоичный файл каждый раз, когда вы хотите больше / меньше журналирования (это подробное журналирование для ошибки, которую вы только что обнаружили в производстве) 1003 *

Сайт Log4Net содержит более подробную информацию

2 голосов
/ 28 сентября 2008

Что-то, что другие комментарии пропустили: если уже есть библиотека, которая делает то, что вы хотите, это избавит вас от необходимости писать код .

Возможно, вы играете здесь семантику: для меня "структура ведения журнала", как правило, это немного больше, чем класс, который записывает сообщения журнала в файл ... так что вы сделали, это написать Ваша собственная структура регистрации. Учитывая, что вы сделали это, очевидно, есть некоторый пункт в «использовании каркаса ведения журнала»!

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

2 голосов
/ 28 сентября 2008

Одним словом: гибкость. Log4xxx дает вам возможность делать разные уровни журналирования, записывать разные модули кода в разные файлы, и вы можете рассчитывать на его надежность, независимо от того, в какую странную ситуацию он попадает (что будет делать ваш регистратор, если на диске недостаточно места). ?)

1 голос
/ 28 сентября 2008

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

1 голос
/ 28 сентября 2008

В зависимости от того, насколько умна ваша собственная система регистрации.

В Java, если вы хотите наследовать типы журналов и т. Д., Это может быть слишком хлопотно, и вы предпочтете сторонний инструмент, такой как Log4J. Я предполагаю, что есть похожие вещи для C #. Точно так же, если вы хотите определить уровень журнала из командной строки.

Если вы просто хотите направить все ваши файлы System.out и контролировать, будут ли они печататься при компиляции, ваш собственный регистратор будет в порядке.

0 голосов
/ 27 сентября 2018

Просто ради аргумента, почему не взрослый дом вырос? который не идет с каким-либо дополнительным багажом, и вы имеете полный контроль над ним.

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

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