如何重定向 web.py 中的输出
关于 web.py 如何将输出重定向到另一个输出目的地 像日志文件一样还是完全删除它?
About web.py How do I redirrect the output to another output destination
like a log file or get rid of it completely?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我必须修改 http://webpy.org/cookbook/logging 中的示例才能记录对文件的请求/响应事件。基本上,除了(根据链接的示例)传递重载 init 的 WsgiLogging 实例之外,还需要重载 call 函数。
web.config 变量在我的主函数中设置,
这将记录请求事件和对指定文件的响应,如下所示
修改 FileLogger 中的“logformat”变量以更改文件中输出的格式化方式。
据我所知,没有办法抑制 web.py 框架生成的请求/响应消息的输出。它使用自己的类(httpserver.py 中的 LogMiddleware)来打印事件。 FileLogger 只是将自身添加到各种记录器中,它不会取代 LogMiddleware。
一旦您按照需要将日志记录到文件中,您就可以将 stdout 和 stderr 的输出重定向到 /dev/null ;
希望这有帮助,祝你好运!
rdp
I had to modify the example from http://webpy.org/cookbook/logging to be able to log the request / response events to a file. Basically, in addition to (per the linked example) passing an instance of WsgiLogging that overloads init, the call function also needs to be overloaded.
The web.config variables are set up in my main function
This will log the request events and the response to the specified file, like this
Modify the 'logformat' variable in FileLogger to change the way the output is formated in the file.
As far as I can tell, there is not a way to supress the output of the the request / response messages that are generated by the web.py framework. It uses its own class (LogMiddleware in httpserver.py) to print out events. The FileLogger just adds itself to the various loggers, it does not replace LogMiddleware.
Once you have logging going to the file as you want, you could just redirect the output of stdout and stderr to /dev/null;
Hope this helps and good luck!
rdp
print
的控制台输出被发送到sys.stdout
。如果需要,您可以用打开的文件或您自己的类似文件的对象替换该流。唯一的要求是您的自定义对象具有 write() 方法。如果要访问或恢复原始输出流,请使用 sys.__stdout__ 。
Console output by
print
is sent tosys.stdout
. You can replace this stream with an open file or your own file-like object if you want. The only requirement is that your custom object has awrite()
method.If you want to access or restore the original output stream, use
sys.__stdout__
.你可以像这样打印到文件:
Python还为日志功能提供了logging模块。
然而,问题的质量给解释你想要输出的内容和原因留下了太多的空间,因此不可能给出一个好的答案。请尝试编辑问题以获取更多详细信息。
You can print to a file like this:
Python also provides logging module for log functions.
However the quality of the question leaves too much for interpretation what you are trying to output and why, thus giving a good answer is impossible. Please try to edit the question for more details.
虽然这是一个旧线程,但遇到它的人可能会对这个来自 web.py Cookbook 的解决方案
感兴趣基本上解释了如何控制默认 HTTPServer 的日志记录。
更新:
另一种解决方案是直接更改 web.py 的代码并将
httpserver.py
中的打印重定向到文件,如推荐的 此处。Although it's an old thread, people running into it might be interested in this solution from the web.py cookbook
It basically explains how to control logging for a default HTTPServer.
Update:
Another solution would be directly changing web.py's code and redirect the print in
httpserver.py
to a file, like recommended here.摆脱它
web.config.debug = False 仍然没有帮助。一些输出仍然完成。
注释掉文件中的行:
C:\Python27\Lib\site-packages\web\httpserver.py
行:
to get rid of it
web.config.debug = False still did not helped. Some output still was done.
Comment out line in file:
C:\Python27\Lib\site-packages\web\httpserver.py
line: