Не очень ясно, касается ли ваш вопрос специфики использования ведения журнала или регистрации исключений, но если последнее, я бы согласился с Адамом Кросслендом в том, что прогон лог-ласточки - это шаблон, которого следует избегать.
Что касается механики каротажа, я бы сделал следующие наблюдения:
- Вам не нужно иметь регистратор в качестве члена экземпляра. Более естественно объявлять регистраторы на уровне модуля, используя
logger = logging.getLogger(__name__)
, и это также будет работать должным образом в подпакетах.
- Ваш вызов logger.log ("message"), скорее всего, все равно не удастся, потому что метод log имеет уровень в качестве первого аргумента, а не сообщение.
Вы должны объявить обработчики, и если ваш сценарий использования довольно прост, вы можете сделать это в вашем методе main или if __name__ == '__main__':
, добавив, например,
logging.basicConfig(filename='/tmp/myapp.log', level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(name)s %(message)s')
, а затем в другом месте вашего кода, просто сделайте, например,
import logging
logger = logging.getLogger(__name__)
один раз в верхней части каждого модуля, где вы хотите использовать ведение журнала, а затем
logger.debug('message with %s', 'arguments') # or .info, .warning, .error etc.
в вашем коде, где это необходимо.