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
Форматирование
Можно задать нужный вам формат логов с помощью 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 | |
Теория Программирования |
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги