Назад к вопросам
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): Задают формат вывода сообщений лога.