Где я могу проверить файл журнала торнадо?

Я думаю, что был файл журнала по умолчанию, но я его еще не нашел.

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

P.S.: написать обработчик исключений - это еще одна тема; сначала я хотел бы узнать свой вопрос.

Я нашел что-то здесь: https://groups.google.com/forum/?fromgroups=#!topic/python-tornado/px4R8Tkfa9c

Но он также не упоминал, где я могу найти этот журнал.

Ответ 1

По умолчанию используется стандартный модуль регистрации python.

Вот определение:

access_log = logging.getLogger("tornado.access")
app_log = logging.getLogger("tornado.application")
gen_log = logging.getLogger("tornado.general")

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

Также вы можете думать таким образом:

tornado.options.options['log_file_prefix'].set('/opt/logs/my_app.log')
tornado.options.parse_command_line()

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

FYI: parse_command_line просто позволяет отличное ведение журнала консоли.

Ответ 2

С более новыми версиями вы можете сделать

args = sys.argv
args.append("--log_file_prefix=/opt/logs/my_app.log")
tornado.options.parse_command_line(args)

или как упоминалось @ColeMaclean, предоставляя

--log_file_prefix=PATH 

в командной строке

Ответ 3

По умолчанию нет файла журнала.

Вы можете использовать опцию командной строки --log_file_prefix=PATH, чтобы установить ее.

Tornado просто использует Python stdlib logging module, если вы пытаетесь сделать что-то более сложное.

Ответ 4

Используйте RotatingFileHandler:

import logging
from logging.handlers import RotatingFileHandler

log_path = "/path/to/tornado.access.log"
logger_ = logging.getLogger("tornado.access")
logger_.setLevel(logging.INFO)
logger_.propagate = False
handler = RotatingFileHandler(log_path, maxBytes=1024*1024*1024, backupCount=3)
handler.setFormatter(logging.Formatter("[%(name)s][%(asctime)s][%(levelname)s][%(pathname)s:%(lineno)d] > %(message)s"))
logger_.addHandler(handler)