Как я могу использовать модуль ведения журнала в Python для записи в файл? Каждый раз, когда я пытаюсь его использовать, он просто распечатывает сообщение.
128
Как я могу использовать модуль ведения журнала в Python для записи в файл? Каждый раз, когда я пытаюсь его использовать, он просто распечатывает сообщение.
Пример использования, logging.basicConfig
а неlogging.fileHandler()
logging.basicConfig(filename=logname,
filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
logging.info("Running Urban Planning")
self.logger = logging.getLogger('urbanGUI')
По порядку пять частей делают следующее:
filename=logname
)filemode='a'
)format=...
)datefmt='%H:%M:%S'
)level=logging.DEBUG
).
if __name__ == '__main__':
если работаете на apacheif __name__ == '__main__':
не выполняется.Взято из " поваренной книги журнала ":
И тебе хорошо идти.
PS Обязательно прочтите также HOWTO по регистрации .
источник
logger.warning("message")
, не могу использоватьlogger.info("message")
ниlogger.debug("message")
. Это немного раздражает.logger.setLevel(logging.DEBUG)
. Регистраторы могут быть настроены с несколькими обработчиками; уровень, настроенный в регистраторе, определяет, какие сообщения журнала уровня важности отправлять каждому из его обработчиков, а уровни, установленные в обработчиках, определяют, какие уровни обработчик будет обрабатывать. Обратите внимание, что тем, кто хочет печатать информационные сообщения, нужно только установить это значениеINFO
как в регистраторе, так и в обработчике.logger.setLevel(logging.DEBUG)
- спасибо за комментарииЯ предпочитаю использовать файл конфигурации. Это позволяет мне переключать уровни ведения журнала, расположение и т. Д. Без изменения кода при переходе от разработки к выпуску. Я просто упаковываю другой файл конфигурации с тем же именем и теми же определенными регистраторами.
Вот мой код для файла конфигурации журнала
источник
%%
в Python 3. напримерtime.strftime("%%Y%%m%%D")
http://docs.python.org/library/logging.html#logging.basicConfig
источник
logging
документация модуля позволяет это сделать. Вы даже можете выбрать, какие журналы идут в терминал, а какие в файл, и еще много интересных приложений. docs.python.org/3/howto/…вот более простой способ сделать это. это решение не использует словарь конфигурации и использует обработчик файла вращения, например:
или так:
переменная обработчиков должна быть итерируемой. logpath + filename и debug_level - это просто переменные, содержащие соответствующую информацию. конечно, значения параметров функции зависят от вас.
в первый раз, когда я использовал модуль ведения журнала, я допустил ошибку, написав следующее, которое генерирует ошибку блокировки файла ОС (решение выше - это решение):
а Боб твой дядя!
источник
http://docs.python.org/library/logging.handlers.html#filehandler
источник
FileHandler
s для разных ситуаций. (WatchedFileHandler
,RotatingFileHandler
и т. д.)источник
источник
Описание формата
Обычный способ звонка
Вывод
Используя Dict, вызовите значения
otherMod2.py
Вывод
источник