2014-10-18 49 views
3

我設置時區的settings.py文件我的Django項目:Django的:保持UTC時間記錄而改變TIME_ZONE設置

TIME_ZONE = 'US/Eastern'

,現在我的日誌包含美國/東部時間。

我想在我的日誌中保留UTC時間。那可能嗎?

+0

Django的只是使用Python日誌記錄,所以搜索。這看起來像一個簡單的方法:http://stackoverflow.com/a/8334378/2395796。 – 2014-10-18 04:48:55

+0

它似乎不像你可以在日誌dictconfig中更改它。格式化程序只接受format和datefmt,而我沒有看到爲Formatter設置類的方法。 – Michael 2014-10-18 20:01:25

+0

我想你可以通過鍵「()」來實現這個功能。請參閱[這裏](https://docs.python.org/3/library/logging.config.html#user-defined-objects)。 – 2014-10-19 02:36:24

回答

7

Django使用Python的日誌記錄工具,所以在這裏不應該有任何Django特定的東西。

根據the logging documentation,設置logging.Formatter.converter = time.gmtime應使所有日誌以UTC輸出。

或者,您也可以使自己的Formatter類使用UTC:

class UtcFormatter(logging.Formatter): 
    converter = time.gmtime 

,然後使用在dictconfig的()鍵(記錄here)進行配置:

LOGGING = { 
    'formatters': { 
     'utc': { 
      '()': 'my.package.UtcFormatter', 
      'format': '...', 
      'datefmt': '...', 
     } 
    } 
}