论坛首页 编程语言技术论坛

python学习笔记 - logging@tornado学习记录一

浏览 8733 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-02-25   最后修改:2011-02-25
笔记下如何使用tornado的日志文件输出

1. tornado logging使用的python内置的logging模块
2. 在tornado/options.py 中定义了对logging配置项的一些定义(如果需要添加启动参数,需要在对应的代码中导入options模块),以下是一些在options.py中定义的Option
-help 
-logging = info|warning|error|none
-log_to_stderr = True|False
-log_file_prefix = your path
-log_file_max_size = int
-log_file_num_backups = int


3. 我们可以通过添加一启动项-log_file_prefix=your complete log path,将整个webapp相关的日志文件写入到指定文件中(同时需要添加如下代码):
from tornado.options import define, options

tornado.options.parse_command_line()


4. 然后通过类似启动命令:python helloworld.py -log_file_prefix=your ** path

由于tornado优良的可扩展性,我们可以同时启动多个tornado server进程,这里我们提出这种需求场景,如何记录各个端口的server日志?

相关代码:
import logging

import tornado.httpserver
import tornado.ioloop
import tornado.web
from tornado.options import define, options

define("port", default=8083, help="Run server on a specific port", type=int)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        logging.info("**Request to MainHandler!")
        self.write("Hello to the Tornado world!")

settings = {
    "debug": True,
}


application = tornado.web.Application([
    (r"/", MainHandler),
], **settings)

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)

    '''
    Get the option(s) from the startup command line if ever.

    In this tutorial, we define own "port" option to change the
    port via the command line, and then we can run multiple tornado
    processes at different ports.
    '''
    tornado.options.parse_command_line()

    # This line should be after the parse_command_line()
    http_server.listen(options.port)

    tornado.ioloop.IOLoop.instance().start()





1. 这里我们自定义一个可根据启动参数来修改的监听端口。
2. 通过-log_file_prefix选项,我们可以将输出日志文件与端口号绑定,用于区分,相关的启动命令类似:
python helloworld.py -port=8091 -log_file_prefix=your complete path/test_log@8091.log
python helloworld.py -port=8092 -log_file_prefix=your complete path/test_log@8092.log


通过以上方式,我们就可以记录多个端口的相关日志,以上代码我使用的是tornado-1.1.1,希望对大家学习tornado有帮助!

如果有其他的解决办法或建议,也请分享下




论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics