Передать экземпляр журнала в класс - PullRequest
0 голосов
/ 08 апреля 2010

Я использую библиотеку Python с открытым исходным кодом в своем проекте. Эта библиотека регистрирует много информации, используя класс регистрации. ... но я не могу увидеть вывод или записать его в файл. Я знаю, что мне нужно создать экземпляр средства ведения журнала и добавить к нему обработчик файла или обработчик консоли, но как я могу передать этот экземпляр средства ведения журнала в класс? Вот фрагмент init класса, который я собираюсь использовать.

class Periscope:
        ''' Main Periscope class'''

        def __init__(self):
                self.config = ConfigParser.SafeConfigParser({"lang": "en"})
                if is_local:
                        self.config_file = os.path.join(bd.xdg_config_home, "periscope", "config")
                        if not os.path.exists(self.config_file):
                                folder = os.path.dirname(self.config_file)
                                if not os.path.exists(folder):
                                        logging.info("Creating folder %s" %folder)
                                        os.mkdir(folder)
                                logging.info("Creating config file")
                                configfile = open(self.config_file, "w")
                                self.config.write(configfile)
                                configfile.close()
                        else:
                                #Load it
                                self.config.read(self.config_file)

                self.pluginNames = self.listExistingPlugins()
                self._preferedLanguages = None

Любая помощь?

Спасибо, ребята.

Ответы [ 2 ]

1 голос
/ 08 апреля 2010

Простейшим способом будет использование функции basicConfig в модуле logging.Вот что говорят docs :

Выполняет базовую настройку системы ведения журнала, создав StreamHandler со стандартным Formatter и добавив его в корневой регистратор.Функция ничего не делает, если для корневого регистратора были определены какие-либо обработчики.Функции debug (), info (), warning (), error () и критически () будут вызывать basicConfig () автоматически, если для корневого регистратора не определены обработчики.

Эта функция ничего не делает, если rootВ логгере уже настроены обработчики.

logging модуль спроектирован таким образом, что конфигурация отделена от создания сообщений журнала, поэтому нет необходимости иметь доступ к экземпляру регистратора.

0 голосов
/ 08 апреля 2010

Попробуйте установить уровень на минимально возможный (DEBUG). Это включает все уровни журнала и должно давать вам все сообщения регистрации. Самый простой способ выполнить настройку по умолчанию - использовать basicConfig ()

import logging    
logging.basicConfig(level=logging.DEBUG, filename='/path/to/mylog.log')

Если используемая библиотека не переопределяет конфигурацию ведения журнала, этого должно быть достаточно для получения сообщений в файл журнала. Если вы знаете имя логгера, который использует библиотека, вы можете установить уровень для библиотеки конкретно:

logging.getLogger("periscope").setLevel(logging.DEBUG)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...