Должны ли библиотечные регистраторы иметь только нулевые обработчики?
Я занимаюсь разработкой новой библиотеки и совершенно не знаком с концепцией ведения журнала.
Я добавил журналирование, используя модуль регистрации Python для того же. В журналировании, которое я дал, есть определенный набор FileHandler для уровня отладки и StreamHandler, установленный на уровне предупреждения. Документация Python о ведении журнала гласит, что в библиотеках должны быть только нулевые обработчики. Вот ссылка на документацию https://docs.python.org/3/howto/logging.html
Будет ли это проблемой, если у меня все еще есть эксклюзивные обработчики файлов и потоков в моей библиотеке?
Я не могу понять, почему нужно создавать журналы в библиотеках, если они не могут иметь свои собственные настраиваемые обработчики.
Было бы очень полезно, если бы кто-то смог устранить пробел в моем понимании о реализации регистрации в библиотеках.
Вторичный вопрос: как разработчик приложения, использующий мою библиотеку, сможет получить доступ / включить журналы, которые я создал в библиотеке, если я установлю обработчик Null?
1 ответ
На ваш первый вопрос - [из документации по питону] -
"Разработчик приложения знает свою целевую аудиторию и какие обработчики наиболее подходят для их приложения: если вы добавите обработчики" под капотом ", вы вполне можете помешать их способности проводить модульные тесты и предоставлять журналы, которые соответствуют их требованиям". 1
Как пользователь вашей библиотеки, я могу захотеть показывать логи из your_pkg.foo.baz, но не из модуля your_pkg.foo. добавление обработчиков из вашей библиотеки может заставить меня сделать это (в зависимости от уровня журнала, который был установлен для регистраторов и обработчиков).
на ваш второй вопрос - добавление Nullhandler позволяет пользователю выбирать его собственные потребности в журнале, настраивая новые обработчики через logging.get_logger("your_pkg.foo.baz").add_handler(...).
чтобы полностью понять механизм ведения журналов (регистраторы, обработчики, фильтры и распространение)- вы можете посмотреть здесь - поток ведения журнала