2011-06-12 91 views

回答

46
logging.Formatter.converter = time.gmtime 

(在logging.Formatter.formatTime文檔字符串記錄)

+2

而且我現在也更新了官方的HTML文檔 - 應該很快出現3.2和3.3,幾天後出現2.7。 – 2011-06-12 10:52:23

+2

描述[這裏](http://docs.python.org/2/library/logging.html#logging.Formatter)。如果要將格式化程序附加到處理程序,首先需要使用** formatter = logging.Formatter(fmt)**創建格式化程序,然後執行** formatter.converter = time.gmtime **,然後執行** myHandler。 setFormatter(格式化程序)** – 2014-03-15 04:46:24

+1

@VinaySajip如何設置它在日誌dictConfig?我使用Django使用logging.dictConfig來配置日誌記錄部分。謝謝 – Michael 2014-10-18 20:02:37

5

只設置logging.Formatter.converter = time.gmtime是無效的我在Python 2.5。

所以我創建了一個子類時將其設置,並使用到位logging.Formatter的:

class UTCFormatter(logging.Formatter): 
    converter = time.gmtime 
+0

(它在2.5中對我有效,以防萬一。) – 2012-07-03 12:13:49

+0

在Python 2.7中爲我工作。因爲它有點棘手,所以添加了一個建議的編輯,顯示了實例化的YAML語法。 (不需要'__init __()'方法,因爲我建議編輯第一個編輯。) – evadeflow 2015-02-09 15:30:30

0

我已經受夠了這兩種回答的問題。所以我只是改變了整個腳本的全球時區:

os.environ['TZ'] = 'Europe/London' 
time.tzset() 
+10

請小心,因爲倫敦在夏季不是格林威治標準時間。 – 2012-08-15 21:47:49

+0

我發現這是在Linux上使用Python 2.7的工作原理。值得使用Linux tzselect命令進行檢查,無論您指定什麼是系統上的有效時區,並使用'date'命令在Python之外進行測試。 Django似乎可以處理它的設置,但是在從非Django Python腳本進行Python日誌記錄時,我遇到了錯誤的時區。 – RichVel 2013-01-01 17:38:44

+1

這是錯誤的!在倫敦的時區不能保證是永久的UTC。 – Federico 2016-01-19 18:15:22