Файл конфигурации протоколов Python

Кажется, у меня возникают некоторые проблемы при попытке выполнить вход в мой проект python.

Я просто пытаюсь воспроизвести следующую конфигурацию:

Регистрация Python в нескольких местах

Однако вместо того, чтобы делать это внутри кода, я хотел бы иметь его в файле конфигурации.

Ниже приведен файл конфигурации:

[loggers] keys=root [logger_root] handlers=screen,file [formatters] keys=simple,complex [formatter_simple] format=%(asctime)s - %(name)s - %(levelname)s - %(message)s [formatter_complex] format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s [handlers] keys=file,screen [handler_file] class=handlers.TimedRotatingFileHandler interval=midnight backupCount=5 formatter=complex level=DEBUG args=('logs/testSuite.log',) [handler_screen] class=StreamHandler formatter=simple level=INFO args=(sys.stdout,) 

Проблема в том, что мой вывод на экран выглядит так:
2010-12-14 11: 39: 04,066 – корень – ПРЕДУПРЕЖДЕНИЕ – 3
2010-12-14 11: 39: 04,066 – корень – ОШИБКА – 4
2010-12-14 11: 39: 04,066 – корень – КРИТИЧЕСКИЙ – 5

Мой файл выводится, но выглядит так же, как и выше (хотя с дополнительной информацией). Однако уровни отладки и информации также не выводятся.

Я нахожусь на Python 2.7

Вот мой простой пример:

 import os import sys import logging import logging.config sys.path.append(os.path.realpath("shared/")) sys.path.append(os.path.realpath("tests/")) class Main(object): @staticmethod def main(): logging.config.fileConfig("logging.conf") logging.debug("1") logging.info("2") logging.warn("3") logging.error("4") logging.critical("5") if __name__ == "__main__": Main.main() 

  • Настройка Sublime Text 2 и 3 для python / django с завершением кода
  • Декодирование объектов HTML с помощью Python
  • Python: как удалить все повторяющиеся элементы из списка
  • Извлечение элементов массива с массивом частот в NumPy
  • Python: определение классов в пакетах
  • присоединяться или сливаться с перезаписью в пандах
  • Как обновить поле manytomany в Django?
  • Python, PyDot и DecisionTree
  • 3 Solutions collect form web for “Файл конфигурации протоколов Python”

    Похоже, вы установили уровни для ваших обработчиков, но не ваш регистратор. Уровень регистратора фильтрует каждое сообщение до того, как он достигнет своих обработчиков, а значение по умолчанию – WARNING и выше (как вы можете видеть). Установка уровня корневого регистратора на NOTSET по NOTSET , а также установка его в DEBUG (или любой другой уровень, который вы хотите зарегистрировать) должны решить вашу проблему.

    Добавление следующей строки в корневой регистратор позаботилось о моей проблеме:

     level=NOTSET 
     #!/usr/bin/env python # -*- coding: utf-8 -*- import logging import logging.handlers from logging.config import dictConfig logger = logging.getLogger(__name__) DEFAULT_LOGGING = { 'version': 1, 'disable_existing_loggers': False, } def configure_logging(logfile_path): """ Initialize logging defaults for Project. :param logfile_path: logfile used to the logfile :type logfile_path: string This function does: - Assign INFO and DEBUG level to logger file handler and console handler """ dictConfig(DEFAULT_LOGGING) default_formatter = logging.Formatter( "[%(asctime)s] [%(levelname)s] [%(name)s] [%(funcName)s():%(lineno)s] [PID:%(process)d TID:%(thread)d] %(message)s", "%d/%m/%Y %H:%M:%S") file_handler = logging.handlers.RotatingFileHandler(logfile_path, maxBytes=10485760,backupCount=300, encoding='utf-8') file_handler.setLevel(logging.INFO) console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) file_handler.setFormatter(default_formatter) console_handler.setFormatter(default_formatter) logging.root.setLevel(logging.DEBUG) logging.root.addHandler(file_handler) logging.root.addHandler(console_handler) [31/10/2015 22:00:33] [DEBUG] [yourmodulename] [yourfunction_name():9] [PID:61314 TID:140735248744448] this is logger infomation from hello module 

    Я думаю, вы должны добавить disable_existing_loggers в false.

    Python - лучший язык программирования в мире.