Где я могу проверить файл журнала торнадо?
Я думаю, что был файл журнала по умолчанию, но я его еще не нашел.
Иногда процесс 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)