Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何改变龙卷风';s记录格式_Python_Logging_Tornado - Fatal编程技术网

Python 如何改变龙卷风';s记录格式

Python 如何改变龙卷风';s记录格式,python,logging,tornado,Python,Logging,Tornado,我有一个我喜欢的日志格式和目标,使用logging.basicConfig设置。我开始在应用程序中使用Tornado WebSocket,现在我使用logging.basicConfig设置的格式和目标被忽略了。我所有的日志消息都被打印到标准输出(而不是我的目标日志文件),格式是Tornado的(而不是我自己的)。我该如何解决这个问题 要将日志指向日志文件,请按如下方式运行Tornado: python app.py --log_file_prefix=mylog.log 更新:如以下注释所述

我有一个我喜欢的日志格式和目标,使用logging.basicConfig设置。我开始在应用程序中使用Tornado WebSocket,现在我使用logging.basicConfig设置的格式和目标被忽略了。我所有的日志消息都被打印到标准输出(而不是我的目标日志文件),格式是Tornado的(而不是我自己的)。我该如何解决这个问题

要将日志指向日志文件,请按如下方式运行Tornado:

python app.py --log_file_prefix=mylog.log
更新:如以下注释所述,这可能是设置日志文件的更好方法:

tornado.options.options['log_file_prefix'].set('mylog.log')
tornado.options.parse_command_line()

我尝试过一种解决方案,可以在标准数据流级别覆盖tornado Logger的默认格式(它似乎适用于所有三种格式:app_log、gen_log、access_log):

。。。然后当你使用任何龙卷风的记录流时,比如:

### let's say we log from your 'main.py' file in an '__init__' function : 

app_log.info('>>> this is app_log')
gen_log.info('>>> this is gen_log ')
access_log.info('>>> this is access_log ')
。。。而不是默认的标准输出:

[I 180318 21:14:35 main:211] >>> this is app_log 
[I 180318 21:14:35 main:212] >>> this is gen_log 
[I 180318 21:14:35 main:213] >>> this is access_log 
。。。您可以使用自己的格式获取标准输出,如:

::: INFO tornado.application 180318 21:14:44 ::: main:211 in __init__ :::                   
>>> this is app_log 

::: INFO tornado.general 180318 21:14:44 ::: main:212 in __init__ :::                               
>>> this is gen_log 

::: INFO tornado.access 180318 21:14:44 ::: main:213 in __init__ :::                                
 >>> this is access_log 

我知道这个解决方案不能直接解决您的基本配置问题,但我想它可能会有帮助

这对我不起作用,因为我使用日期以编程方式设置文件名。然而,你的评论给了我所需要的钩子,log\u file\u前缀。我可以这样做:
tornado.options.options['log\u file\u prefix'].set('/opt/logs/my\u app.log')tornado.options.parse\u command\u line()
,这是我在问题的答案中找到的。
::: INFO tornado.application 180318 21:14:44 ::: main:211 in __init__ :::                   
>>> this is app_log 

::: INFO tornado.general 180318 21:14:44 ::: main:212 in __init__ :::                               
>>> this is gen_log 

::: INFO tornado.access 180318 21:14:44 ::: main:213 in __init__ :::                                
 >>> this is access_log