python logging 定向不输出到屏幕?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python logging 定向不输出到屏幕?相关的知识,希望对你有一定的参考价值。

如何设置python的logging模块,使log 信息不默认输出到默认的std I/O? 但是不要保存到某文件.

参考技术A 简答:你自己貌似自相矛盾:
既不让信息输出到standard i/o 也不让输出到文件,哪你想让其输出到哪里???
所以,你还是把你的问题搞清楚了,再来问吧。

正常的做法,是设置某个输出等级,高于某个等级,就不输出到标准io。
可以支持同时输出到对应的文件。
详细用法,我早就写好教程了,需要的自己去看:
【整理】Python中的logging模块的使用(可以实现同时输出信息到cmd终端窗口和log文件(txt)中)

(此处不给贴地址,自己用google搜标题,即可找到帖子地址的)追问

你想不出来吧? 比如我想输出到一个客户端ui窗口,但是不输出到系统默认终端。

追答

1.“你想不出来吧?”
我表示,我看不懂你这句啥意思。

2.估计是,在logging初始化的时候,设置你要的客户端ui窗口,为对应的handler,估计就可以了。
具体用法,自己参考上面的帖子。

追问

你想不出来我要输出哪是你想不出来,就不要说我是自相矛盾了。
我早已经能输出到ui窗口了,这个很容易,但是终端还是也同时输出信息,就是说默认的handler还在工作。

追答

"你想不出来我要输出哪是你想不出来,就不要说我是自相矛盾了。"
恩,是我没想出来。我的错。现在理解你的意思了。

刚去专门测试了下,可以通过,不把console添加到你的log的handler中,就可以实现,输出的信息,不会输出到屏幕(windows的cmd)中了。
详细过程见:
【已解决】使Python中的logging的日志内容不输出到(Windows的cmd,Linux的terminal等)终端中

参考技术B 那你想输出到哪?截获sys.stdout就可以了追问

输出到ui! 怎么截获?

追答

定义个StringIO,并赋值给sys.stdout
code:
stdout = StringIO.StringIO()
sys.stdout = stdout

然后就可以从stdout里拿到输出

追问

截获sys.stdout感觉不太好,能把logging默认输出到屏幕的handler关闭吗?

追答

写代码不是靠感觉,这个是个技巧,如果只是想关闭cmdline的输出,用重定向的方式就行了,在命令后面加上 1>nul

本回答被提问者采纳

以上是关于python logging 定向不输出到屏幕?的主要内容,如果未能解决你的问题,请参考以下文章

python 让Log既打印在屏幕上,又在文件里保存一份

linux重定向及nohup不输出的方法

在linux上单独执行屏幕有输出,重定向后没有任何输出了。 myprog > 1.log 或 myprog tee 1.log

linux中报错“把输出追加到nohup.out”啥意思?

linux中的管道符重定向于环境变量

python3 logging笔记