Я изменил уровень ведения журнала по умолчанию на logging.INFO (20) с Logging.DEBUG (10), но тогда сообщения отладки не будут отображаться, если позже я изменю logLevel на 'DEBUG' код:
Старая конфигурация работает нормально:
>>> import mylog
>>> log1 = mylog.mylogger('log1',level=10) # default is DEBUG
added logger log1 of level:10
>>> log1
>>> log1.debug("works")
20241007163742.800|DEBUG|:1|works
>>> log1.setLevel(20)
>>> log1
>>> log1.info("works")
20241007163825.042|INFO|:1|works
>>> log1.debug("should not show")
>>>
Я также могу вернуться к отладке, и это работает:
>>> log1.setLevel(10)
>>> log1
>>> log1.debug("works")
20241007164010.113|DEBUG|:1|works
Все в порядке, за исключением того, что по умолчанию ведется журналирование DEBUG, которое записывает слишком много информации, если я не меняю уровень журнала.
Но если я выбираю уровень по умолчанию =20 Я не вижу DEBUG после log2.setLevel(10):
>>> log2 = mylog.mylogger('log2',level=20) # default is INFO
added logger log2 of level:20
>>> log2
>>> log2.info("works")
20241007164505.921|INFO|:1|works
>>> log2.debug("should not show")
>>> log2.setLevel(10)
>>> log2
>>> log2.info("works as before")
20241007164628.199|INFO|:1|works as before
>>> log2.debug("why is this not showing")
>>>
мой упрощенный модуль журнала mylog.py:
import logging
def mylogger(name:str, level:int=logging.INFO) -> logging.Logger:
""" default logger """
logger = logging.getLogger(name)
if logger.hasHandlers():
print(f"logger {name} already has handler")
else:
logger.setLevel(level)
console_fmt = "%(asctime)s.%(msecs)03d|%(levelname)s|%(pathname)s:%(lineno)d|%(message)s"
datefmt = "%Y%m%d%H%M%S"
ch = logging.StreamHandler()
ch.setLevel(level)
ch.setFormatter(logging.Formatter(file_fmt, datefmt))
logger.addHandler(ch)
logger.propagate = False
print(f"added logger {name} of level:{logger.level}")
return logger
Может ли это быть уровень StreamHandler()?
Как я могу проверить это после того, как он был настроен?< /p>
>>> loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
>>> loggers
[, ]
Подробнее здесь: https://stackoverflow.com/questions/790 ... -change-to
Python logger init to `level=20` (INFO) не показывает отладку, если я позже перейду на `level=10` (DEBUG) ⇐ Python
Программы на Python
1728321444
Anonymous
Я изменил уровень ведения журнала по умолчанию на logging.INFO (20) с Logging.DEBUG (10), но тогда сообщения отладки не будут отображаться, если позже я изменю logLevel на 'DEBUG' код:
Старая конфигурация работает нормально:
>>> import mylog
>>> log1 = mylog.mylogger('log1',level=10) # default is DEBUG
added logger log1 of level:10
>>> log1
>>> log1.debug("works")
20241007163742.800|DEBUG|:1|works
>>> log1.setLevel(20)
>>> log1
>>> log1.info("works")
20241007163825.042|INFO|:1|works
>>> log1.debug("should not show")
>>>
Я также могу вернуться к отладке, и это работает:
>>> log1.setLevel(10)
>>> log1
>>> log1.debug("works")
20241007164010.113|DEBUG|:1|works
Все в порядке, за исключением того, что по умолчанию ведется журналирование DEBUG, которое записывает слишком много информации, если я не меняю уровень журнала.
Но если я выбираю уровень по умолчанию =20 Я не вижу DEBUG после log2.setLevel(10):
>>> log2 = mylog.mylogger('log2',level=20) # default is INFO
added logger log2 of level:20
>>> log2
>>> log2.info("works")
20241007164505.921|INFO|:1|works
>>> log2.debug("should not show")
>>> log2.setLevel(10)
>>> log2
>>> log2.info("works as before")
20241007164628.199|INFO|:1|works as before
>>> log2.debug("why is this not showing")
>>>
мой упрощенный модуль журнала mylog.py:
import logging
def mylogger(name:str, level:int=logging.INFO) -> logging.Logger:
""" default logger """
logger = logging.getLogger(name)
if logger.hasHandlers():
print(f"logger {name} already has handler")
else:
logger.setLevel(level)
console_fmt = "%(asctime)s.%(msecs)03d|%(levelname)s|%(pathname)s:%(lineno)d|%(message)s"
datefmt = "%Y%m%d%H%M%S"
ch = logging.StreamHandler()
ch.setLevel(level)
ch.setFormatter(logging.Formatter(file_fmt, datefmt))
logger.addHandler(ch)
logger.propagate = False
print(f"added logger {name} of level:{logger.level}")
return logger
Может ли это быть уровень StreamHandler()?
Как я могу проверить это после того, как он был настроен?< /p>
>>> loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
>>> loggers
[, ]
Подробнее здесь: [url]https://stackoverflow.com/questions/79062615/python-logger-init-to-level-20-info-do-not-show-debug-if-i-later-change-to[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия