2015-09-04 4 views
1

Я хотел бы изменить временную метку в файле журнала так, чтобы она отражала мой текущий часовой пояс, чтобы я мог быстрее отлаживать ошибки,Как изменить часовой пояс в протоколе Python?

Возможно ли, что я могу изменить часовой пояс в файле журнала ?

В настоящее время мой конфиг является:

logging.basicConfig(filename='audit.log', 
       filemode='w', 
       level=logging.INFO, 
       format='%(asctime)s %(message)s', 
       datefmt='%m/%d/%Y %I:%M:%S %p') 
+0

Журналы приходят во всех видах форматов. Вам, вероятно, потребуется опубликовать образец. То есть, если вы имеете в виду изменение часового пояса в существующем файле журнала. – CivFan

+0

И каков часовой пояс, на который он в настоящее время выводит время? Правильно ли установлен часовой пояс на компьютере, на котором работает код? Потому что согласно [странице ведения журнала] (https://docs.python.org/2/library/logging.html) 'time.localtime()' используется по умолчанию. – CristiFati

+0

его в Часовой пояс Аляски UTC-09: 00. я не могу изменить системный часовой пояс, так как есть другие приложения, зависящие от времени. – 25mhz

ответ

3
#!/usr/bin/env python 
from datetime import datetime 
import logging 
import time 

from pytz import timezone, utc 


def main(): 
    logging.basicConfig(format="%(asctime)s %(message)s", 
         datefmt="%Y-%m-%d %H:%M:%S") 
    logger = logging.getLogger(__name__) 
    logger.error("default") 

    logging.Formatter.converter = time.localtime 
    logger.error("localtime") 

    logging.Formatter.converter = time.gmtime 
    logger.error("gmtime") 

    def customTime(*args): 
     utc_dt = utc.localize(datetime.utcnow()) 
     my_tz = timezone("US/Eastern") 
     converted = utc_dt.astimezone(my_tz) 
     return converted.timetuple() 

    logging.Formatter.converter = customTime 
    logger.error("customTime") 

    # to find the string code for your desired tz... 
    # print(pytz.all_timezones) 
    # print(pytz.common_timezones) 


if __name__ == "__main__": 
    main() 
  • Якобы pytz пакета блаженным способ преобразования часовых поясов в Python. Итак, мы начинаем с datetime, конвертировать, затем получить (неизменный) time_tuple, чтобы соответствовать типу возвращаемого из time методов
  • Настройки функции logging.Formatter.converter рекомендуется этим ответом: (Python logging: How to set time to GMT).
  • Найдите свой любимый код TZ раскомментировав конца строки
+0

Это фактически не регистрирует часовой пояс. – Wyrmwood

1

%Z из strftime формата

Окна

>>> import logging 
>>> logging.basicConfig(format="%(asctime)s %(message)s", datefmt="%m/%d/%Y %I:%M:%S %p %Z") 
>>> logging.error('test') 
11/03/2017 02:29:54 PM Mountain Daylight Time test 

Linux

>>> import logging 
>>> logging.basicConfig(format="%(asctime)s %(message)s", datefmt="%m/%d/%Y %I:%M:%S %p %Z") 
>>> logging.error('test') 
11/03/2017 02:30:50 PM MDT test 

 Смежные вопросы

  • Нет связанных вопросов^_^