logging Python

Содержание
Введение
Пример
Включить Debug
Лог в файл
Форматирование
Передать уровень лога как строку
Похожие статьи

Введение

В этой статье вы можете изучить примеры применения библиотеки logging

Пример

По умолчанию Info и Debug отключены. В этом легко убедиться запустив скрипт следюущего содержания

import logging logging.critical("Critial Log") logging.error("Error Log") logging.warning("Warning Log") logging.info("Info Log") logging.debug("Debug Log")

python log_example.py

CRITICAL:root:Critial Log ERROR:root:Error Log WARNING:root:Warning Log

Включить Debug

Если теперь нужно повысить детализацию лога сделать это можно с помощью logging.basicConfig

import logging logging.basicConfig(level=logging.DEBUG) logging.critical("Critial Log") logging.error("Error Log") logging.warning("Warning Log") logging.info("Info Log") logging.debug("Debug Log")

python log_example.py

CRITICAL:root:Critial Log ERROR:root:Error Log WARNING:root:Warning Log INFO:root:Info Log DEBUG:root:Debug Log

Лог в файл

import logging logging.basicConfig(filename='example.log', level=logging.DEBUG) logging.critical("Critial Log") logging.error("Error Log") logging.warning("Warning Log") logging.info("Info Log") logging.debug("Debug Log")

python log_example.py

В терминал уже ничего не выводится, зато появился файл example.log

cat example.log

CRITICAL:root:Critial Log ERROR:root:Error Log WARNING:root:Warning Log INFO:root:Info Log DEBUG:root:Debug Log

РЕКЛАМА хостинга Beget, которым я пользуюсь более десяти лет

Изображение баннера

Конец рекламы хостинга Beget, который я всем рекомендую.

Форматирование

Можно задать нужный вам формат логов с помощью logrecord-attributes

# log_example.py import logging def main() -> None: logging.basicConfig( filename="example.log", level=logging.DEBUG, format="%(asctime)s %(levelname)s: %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) logging.critical("Critial Log") logging.error("Error Log") logging.warning("Warning Log") logging.info("Info Log") logging.debug("Debug Log") if __name__ == "__main__": main()

python log_example.py
cat example.log

2025-03-23 11:38:26 CRITICAL: Critial Log 2025-03-23 11:38:26 ERROR: Error Log 2025-03-23 11:38:26 WARNING: Warning Log 2025-03-23 11:38:26 INFO: Info Log 2025-03-23 11:38:26 DEBUG: Debug Log

Передать уровень лога как строку

Часто уровень лога прописан где-то в конфиге. Поэтому он будет прочитан и передат в функцию как строка а не как объект вида logging.critical … logging.debug

В этом случае нужно использовать logginb.getLevelName()

# log_example.py import logging def main(log_level) -> None: level = str(log_level).upper() logging.basicConfig( level=logging.getLevelName(level), format="%(asctime)s %(levelname)s: %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) logging.critical("Critial Log") logging.error("Error Log") logging.warning("Warning Log") logging.info("Info Log") logging.debug("Debug Log") if __name__ == "__main__": main("Error")

python log_example.py

2025-03-23 11:38:26 CRITICAL: Critial Log 2025-03-23 11:38:26 ERROR: Error Log

Автор статьи: Андрей Олегович
Похожие статьи
C
C++
Go
Groovy
Java
JavaScript
PHP
Python
Ruby
.NET/C#
Thrift
Теория Программирования

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы. Если там пусто считайте это рекламой моей телеги

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: