каков механизм ведения журнала в python (2.5.2)? подойдет ли log4j похожая библиотека или стандартный класс python / geodjango?

#python #logging #geodjango

#python #ведение журнала #geodjango

Вопрос:

Я планирую добавить механизм ведения журнала в мой веб-сервис python и geodjango. Есть ли log4j похожий на механизм ведения журнала в python / geodjango?

Я ищу эквивалент log4j dailyrollingfileappender. Затем автоматически удалите все файлы журналов 1-месячной давности.

Приветствуются любые рекомендации.

UPDATES1 Я имею в виду приведенный ниже формат.

 datetime(ms)|log level|current thread name|client ip address|logged username|source file|source file line number|log message
 

Ответ №1:

Да — Python 2.5 включает модуль «ведение журнала». Один из поддерживаемых им обработчиков — это handlers.TimedRotatingFileHandler то, что вы ищете. ‘logging’ очень прост в использовании:

пример:

 import logging
import logging.config

logging.fileConfig('mylog.conf')
logger = logging.getLogger('root')
 

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

 #======================

# mylog.conf
[loggers]
keys=root

[handlers]
keys=default

[formatters]
keys=default

[logger_root]
level=INFO
handlers=default
qualname=(root) # note - this is used in non-root loggers
propagate=1 # note - this is used in non-root loggers
channel=
parent=

[handler_default]
class=handlers.TimedRotatingFileHandler
level=INFO
formatter=default
args=('try.log', 'd', 1)

[formatter_default]
format=%(asctime)s %(pathname)s(%(lineno)d): %(levelname)s %(message)s
 

Комментарии:

1. import logging...logger = logging.getLogger('root') нужно ли включать все файлы py для использования системы ведения журнала?

2. куда мне нужно поместить mylog.conf? можно ли изменить имя файла? как mylog.py ?

3. args=('try.log', 'd', 1) -> 1 — это backupCount? 1 означает, что останется один файл (плюс текущий файл журнала try.log)?

4. В третьей строке вашего примера отсутствует ‘config’. Это должно быть logging.config.fileConfig(‘log.conf’)