Назад к вопросам
Junior
79
questionbank
Как добавить логирование в любой питоновский скрипт?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Для базового логирования:
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def my_function():
logging.info("Начало выполнения my_function")
# Ваш код
logging.debug("Промежуточная информация для отладки")
try:
result = 1 / 0
except ZeroDivisionError:
logging.error("Ошибка деления на ноль")
logging.info("Завершение выполнения my_function")
my_function()
Для более гибкого конфигурирования можно использовать конфигурационный файл или словарь:
import logging
import logging.config
# Пример конфигурации в словаре
log_config = {
'version': 1,
'formatters': {
'simpleFormatter': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
},
},
'handlers': {
'consoleHandler': {
'class': 'logging.StreamHandler',
'formatter': 'simpleFormatter',
'level': 'INFO'
},
'fileHandler': {
'class': 'logging.FileHandler',
'formatter': 'simpleFormatter',
'level': 'DEBUG',
'filename': 'app.log'
}
},
'loggers': {
'myApp': {
'handlers': ['consoleHandler', 'fileHandler'],
'level': 'DEBUG',
'propagate': False
}
},
'root': {
'handlers': ['consoleHandler'],
'level': 'INFO'
}
}
logging.config.dictConfig(log_config)
logger = logging.getLogger('myApp')
def another_function():
logger.info("Выполнение another_function")
logger.debug("Подробности выполнения")
another_function()
Ключевые элементы:
logging.basicConfig(): Простейший способ настроить корневой логгер.logging.getLogger(name): Получает экземпляр логгера. Использование имен позволяет создавать иерархию логгеров для модулей или приложений.- Уровни логирования:
DEBUG: Детальная информация, полезная для отладки.INFO: Общая информация о ходе выполнения.WARNING: Предупреждение о возможных проблемах.ERROR: Ошибка, которая не останавливает выполнение программы.CRITICAL: Критическая ошибка, после которой программа может завершиться.
- Хэндлеры (
Handlers): Определяют, куда отправлять сообщения лога (консоль, файл, сеть и т.д.). - Форматтеры (
Formatters): Задают формат вывода сообщений лога.