2016-02-03 38 views
1

我在我的python代碼中使用httplib,並提到了以下內容。如何在文件中寫入日誌?

import httplib httplib.HTTPConnection.debuglevel = 2

我得到我需要的所有信息,但httplib的庫在打印在控制檯上。

我不知道通過哪種方式可以將所有這些日誌記錄到日誌文件中,而不是在控制檯上。

回答

0

也許試試這個:

f = open('output.txt','w') 
sys.stdout = f 

重新導向的標準輸出到文件中。

+1

將其寫入文件可以工作,但我們可以以某種方式寫入,直到程序執行未完成。這可能是什麼條件? – user2606665

2

如果你看一下httplib源代碼(https://hg.python.org/cpython/file/2.7/Lib/httplib.py),你會看到調試是通過打印語句完成的,所以你不能使用日誌配置來截獲日誌,並且因爲print是一個語句,你可以不要哄搶它來做你的競標。

您有幾種選擇:

  1. 使用替代httplib的
  2. 子類HttpConnection的,做一些醜陋__getattribute__(或只寫道直通你想記錄每個方法)和日誌時呼叫發生。
  3. 根據你在做什麼,只需將程序的stdout重定向到一個文件。
+0

我想重定向我的程序的標準輸出,但是如何才能完成程序的執行?你有任何其他的關於httplib替代日誌的建議嗎?我正在使用請求發送請求,但它沒有找到任何登錄的請求。 – user2606665

+0

'$ python yourscript.py> logfile'將腳本的stdout寫入一個名爲logfile的文件。如果你想看到輸出_and_把它寫到一個文件中,可以使用'$ python yourscript.py | tee日誌文件「。請求使用標準庫日誌記錄。它在http://docs.python-requests.org/en/master/api/(搜索「logging」)中記錄爲升級說明的一部分 –