我正在尝试使用Tornado webserver实现websockets。
我的设置如下:
from tornado.options import options, define, parse_command_line
import django.core.handlers.wsgi
import logging
import tornado.httpserver
import tornado.ioloop
import tornado.web
import tornado.wsgi
from pogows.tornado_sockets import GetSocketHandler, UpdateSocketHandler
from mobile.cleaner import start_cleaning
define('port', type=int, default=8080)
tornado.options.options['log_file_prefix'].set('/var/www/pogo_django/logs/tornado_server.log')
tornado.options.parse_command_line()
<snip>
def main():
logger = logging.getLogger(__name__)
wsgi_app = tornado.wsgi.WSGIContainer(
django.core.handlers.wsgi.WSGIHandler())
tornado_app = tornado.web.Application(
[
('/hello-tornado', HelloHandler),
('/socket/get', GetSocketHandler),
('/socket/update', UpdateSocketHandler),
('.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app)),
], debug=True)
logger.info("Tornado POGO server starting...")
server = tornado.httpserver.HTTPServer(tornado_app)
server.listen(options.port)
start_cleaning()
tornado.ioloop.IOLoop.instance().start()
到目前为止,一切看起来都很好,龙卷风日志,我看到了信息消息。 现在,我正在尝试从websocket处理程序类中记录一些内容。
class GetSocketHandler(tornado.websocket.WebSocketHandler):
def open(self):
print "opening"
def on_closed(self):
print "closing"
def on_message(self, message):
last_update=datetime.datetime.utcnow().replace(tzinfo=utc)
try:
print "getting_user"
...
Tornado由supervisord管理,具有以下配置:
[program:pogo_tornado] command = / var / www / pogo_django / tornado_server.py user = www-data stdout_logfile = / var / www / pogo_django / logs / pogo_stdout.log stderr_logfile = /无功/网络/ pogo_django /日志/ pogo_stderr.log 环境= PYTHONPATH = “/无功/网络/ pogo_django /”,DJANGO_SETTINGS_MODULE = “pogo.settings”
我尝试了一些事情。
print
语句,如上面的代码片段所示,希望supervisord能够捕获它并发送到stdout / stderr日志。logging.getLogger()
实例并使用它。它们都没有产生预期的结果。
当我手动从命令行运行龙卷风时,我确实看到print
版本打印到控制台,但logging
无论如何都不起作用。
我哪里出错了?
答案 0 :(得分:3)
getLogger()
而没有设置日志记录级别,只是盲目地记录到DEBUG
。
明确使用logger.setLevel(logging.DEBUG)
向我展示了日志中的消息。
显然Tornado默认设置其他级别..愚蠢我。