Какой смысл использовать систему ведения журнала?
Я думаю, что, возможно, мне не хватало основы для ведения журнала для вашего приложения. Во всех небольших приложениях я всегда писал небольшой класс "Ведение журнала" и просто передавал сообщения журнала методу в нем, который записывается в файл.
Какова цель сторонней системы ведения журнала, такой как log4net? Является ли это безопасностью потоков при записи операций записи или я что-то не хватает?
Ответы
Ответ 1
Это отличный вопрос.
Первая причина - почему бы и нет? Если вы используете фреймворк протоколирования, то вы воспользуетесь преимуществами поддерживающей возможности использования уже упакованного пакета.
Вторая причина заключается в том, что запись является тонкой. Различные потоки, сеансы, классы и экземпляры объектов могут вступить в игру при регистрации, и вы не хотите, чтобы эта проблема возникала на лету.
Третья причина заключается в том, что вы можете обнаружить узкое место в вашем коде. Выяснив, что ваш код медленный, потому что вы пишете файл без буферизации или на вашем жестком диске закончилось дисковое пространство, потому что регистратор не выполняет опрокидывание и не сжимает старые файлы, может быть боль в шее.
Четвертая причина заключается в том, что вы можете захотеть добавить в syslog или записать в базу данных или в сокет или в разные файлы. В Frameworks встроена эта функциональность.
Но на самом деле первый ответ - лучший; очень мало пользы для написания собственных и целая куча недостатков.
Ответ 2
вам может потребоваться переключиться на запись в db для некоторого сообщения или в систему оповещения, которая сообщает бедному человеку о поддержке
Однако важно, что большинство фреймворков протоколирования позволяют вам задавать уровень логического уровня для разных классов, поэтому вам не нужно вырезать новый двоичный файл каждый раз, когда вам нужно больше/меньше протоколирования (это подробное ведение журнала для ошибки, которую вы только что заметили в процессе производства)
Сайт Log4Net имеет более подробную информацию
Ответ 3
Одним словом: гибкость. Log4xxx дает вам возможность выполнять разные уровни ведения журнала, записывать различные модули кода в разные файлы, и вы можете зависеть от него, чтобы быть надёжным, независимо от того, какая странная ситуация он нажимает (что сделает ваш регистратор, если диск вышел из космоса?)
Ответ 4
Что-то, что пропустили другие комментарии: если у вас уже есть библиотека, которая делает то, что вы хотите, это избавит вас от необходимости писать код.
Возможно, вы играете семантику здесь: для меня "структура ведения журнала" обычно немного больше, чем класс, который записывает сообщения журнала в файл... так что вы сделали, это написать свою собственную систему ведения журнала. Учитывая, что вы это сделали, очевидно, что "использование фреймворка ведения журнала" имеет определенный смысл!
В конечном счете вам нужно будет убедиться, что он правильно управляет протоколированием (блокировка выходного потока), может регистрироваться в файле, syslog и т.д., может выполнять свертывание журнала и т.д. Вы можете сэкономить свои усилия, используя другой проверенный код.
Ответ 5
В зависимости от того, насколько разумна ваша собственная система ведения журнала.
В java, если вы хотите наследовать типы журналов и т.д., это может быть слишком много хлопот, и вы предпочтете сторонний инструмент, например Log4J. Я предполагаю, что для С# есть похожие вещи. Аналогично, если вы хотите определить уровень журнала из командной строки.
Если вы просто хотите перенаправить все свои System.out и контролировать, будут ли они печататься всякий раз, когда вы компилируете, ваш собственный журнал будет очень хорош.
Ответ 6
Рамки ведения журнала обеспечивают гибкость и не позволяют изобретать колесо. Я знаю, что мозг-мертв просто добавить к файлу на любом современном языке, но у вашего домашнего журнала есть несколько целей? Можете ли вы включить и отключить ведение журнала во время выполнения? Зачем рисковать плоской шиной, когда эти колеса доступны бесплатно?