2016-06-24 3 views
0

Я пытаюсь узнать, как создать собственный регистратор. Я не совсем уверен, что ниже ошибка говорит мне, поэтому, если кто-то может привести меня в правильном направлении, это было бы здорово.Ошибка пользовательского регистратора?

Когда я импортировать и запустить регистратор из моего launcher.py файла ...

import custom_logging as logging 
logging.getLogger(__name__) 

Я получаю эту ошибку:

No handlers could be found for logger "mb.custom-logger" 

Я знаю, что custom-logger часть регистратора имя исходит из файла custom_logger/__init__.py ....

... a bunch of code 

log = getLogger('mb-logger') 
log.warning('Creating log : {0}'.format(log_file)) 

Но я не уверен, где находится часть mb в сообщении об ошибке или с чем она связана. Есть предположения?

Кроме того, чтобы дать некоторый контекст, мой проект настроен так:

Project_Root/ 
    bin/ 
     launcher.py (this is where the error is occurring) 
    modules/ 
     custom-logger/ 
      source/ 
       custom_logger/ 
        __init__.py (this is where the custom logger is created) 
+1

Возможно, вам нужно показать нам, как пользовательский регистратор создается в скрипте '__init __. Py'. – martineau

+0

вы можете упростить [структуру каталогов проекта] (http://docs.python-guide.org/en/latest/writing/structure/#structure-of-the-repository) – miraculixx

ответ

1

Ищет проблему. @martineau предложил показать код, поэтому я начал редактировать его, чтобы быть более презентабельным. Во время этого процесса я обнаружил ошибку!

Чтобы ответить на мой первоначальный вопрос, mb в сообщении об ошибке относится к root_logger.

Когда я переопределял метод getLogger внутри моего custom_logger/init .py, регистратор, который я возвращал, не соответствовал корневому журналу. Как так:

Код ошибки:

root_logger = getLogger(mb_tool)     # Name that needs to match = 'mb_tool' 

def getLogger(name='default'): 
    for handler in root_logger.handlers: 
     handler.setLevel(DEBUG) 
    return logging.getLogger(mb.{0}'.format(name)) # Name that doesn't match = 'mb' 

Исправлено:

root_logger = getLogger(mb_tool) 

def getLogger(name='default'): 
    for handler in root_logger.handlers: 
     handler.setLevel(DEBUG) 
    return logging.getLogger(mb_tool.{0}'.format(name)) 

Изменение mb к mb_tool неподвижную все. Спасибо, что нашли время, чтобы помочь всем.

+0

Stackoverflow позволяет принять ваш собственный ответ. –

1

Согласно Python - No handlers could be found for logger "OpenGL.error", для отладки кода вам необходимо иметь:

import custom_logging as logging 
logging.basicConfig() 

И тогда вы должны увидеть детали ошибки в выводе командной строки.

Мое предположение заключается в том, что вы изменили модуль регистрации.

+0

В моем custom_logger/__ init__.py Я редактирую конфигурацию logger со словарем, как в этом примере: http://docs.python-guide.org/en/latest/writing/logging/ logging.config.dictConfig (log_settings); logging.captureWarnings (True); Будет ли вызов basicConfig() отменять мои пользовательские настройки? –

+0

Кроме того, что означает «mb» в «mb.custom_logger»? –

Смежные вопросы