Все,
Интересно, что наиболее успешная практика расценивает вход в библиотеке. Я создаю библиотеку C#, которая будет использоваться пользователями, и в некоторых точках я хочу зарегистрировать ошибку или предупреждение. Действительно ли это - хорошая практика, чтобы использовать log4net и войти в систему файл?
Спасибо,
M
Прелесть использования log4net в том, что вашей библиотеке не нужно указывать, где что-то регистрируется. Место назначения (добавление журнала) сообщений журнала определяется конфигурацией, которая указывается приложением (обычно в файле конфигурации).
Итак, да, используйте log4net, следуя их рекомендуемым шаблонам (уникальный «регистратор» для каждого класса), и сообщите вашим пользователям, что ваша библиотека использует log4net. Любые сообщения журнала, которые генерирует код вашей библиотеки, будут маршрутизироваться в соответствии с конфигурацией потребителей (файл, база данных, консоль, трассировка и т. Д.).
РЕДАКТИРОВАТЬ: Вот хороший краткий учебник по log4net, объясняющий основные концепции.
log4net - это просто сторонняя библиотека, это не лучшая практика , что вы должны использовать ее в качестве библиотеки журналов при использовании C #. Я бы посоветовал всегда сохранять журнал где-нибудь (чаще всего в текстовом файле). Однако есть также журнал событий (требуется небольшая дополнительная настройка).
Я обычно использую NLog , который, как мне кажется, очень прост в использовании и настройке. Что касается регистрации в ваших библиотеках классов, то на самом деле это просто тот подход, который, по вашему мнению, лучше всего подходит для вашего приложения. Некоторые люди создают 1 регистратор и передают его классам, другие создают отдельный регистратор для каждого регистрируемого класса
. Я обычно создаю статический регистратор для каждого класса, и он отлично работает.
Я использую log4net в своей собственной библиотеке, но я бы не стал этого делать, если моя библиотека должна использоваться другими (т.е. вне моей организации). В этом случае я бы использовал интерфейс для ведения журнала, предоставил реализацию по умолчанию на основе log4net в отдельной сборке и использовал бы так или иначе, чтобы позволить пользователям библиотеки внедрять свою собственную реализацию.
Сказав это: мне очень нравится log4net, и я бы не стал использовать что-либо еще, но я думаю, что неправильно заставлять других использовать выбранную вами структуру ведения журнала.
Изменить:
Практика тисков. Хороший способ сделать это - ввести фасад ведения журнала, чтобы вы не Не заботитесь о том, какой регистратор вы используете, у вас есть согласованный общий интерфейс для регистратора.
например, вы можете попробовать это или просто написать свой собственный.
Это зависит от того, что вы хотите сделать.
Хотите ли вы иметь механизм регистрации чисто технических вещей, который вы можете включать / выключать с разной степенью детализации (для поддержки)? Или вы хотите регистрировать больше информации, связанной с бизнесом, которая предназначена для быть прочитанным пользователями вашей библиотеки?
Сначала вы должны ответить на эти вопросы, затем вы сможете решить, что регистрировать, где его хранить и как его форматировать ...
В любом случае, log4net - это хороший, зрелый и стабильный фреймворк для всех этих целей. И регистрироваться в скользящем файле - обычная практика (но далеко не единственный вариант ...).
С уважением Томас
Что ваши пользователи используют для регистрации?
Это вопрос, на который вам нужно ответить, чтобы определить правильный фреймворк.
Log4net является мощным и относительно простым с моей точки зрения. Вы также можете использовать его для записи логов в streamwriter, если больше ничего не указано.