Ответ 1
Вам нужно datetime.strftime()
, это позволяет отформатировать временную метку, используя все директивы C strftime()
. В вашем конкретном случае:
>>> datetime.now().strftime('mylogfile_%H_%M_%d_%m_%Y.log')
'mylogfile_08_48_04_02_2012.log'
Когда я создаю свой файл журнала, я хочу, чтобы имя содержало дату и время.
Теперь, в python, вы можете получить текущее datetime как:
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2012, 2, 3, 21, 35, 9, 559000)
Версия str
>>> str(datetime.now())
'2012-02-03 21:35:22.247000'
Не очень хорошая строка для добавления имени файла журнала! Я бы хотел, чтобы мой файл журнала выглядел примерно так:
mylogfile_21_35_03_02_2012.log
Можно ли что-то сделать python, чтобы сделать это проще? Заметьте, я создаю файл журнала как
fh = logging.FileHandler("mylogfile" + datetimecomp + ".log")
Любые советы?
Вам нужно datetime.strftime()
, это позволяет отформатировать временную метку, используя все директивы C strftime()
. В вашем конкретном случае:
>>> datetime.now().strftime('mylogfile_%H_%M_%d_%m_%Y.log')
'mylogfile_08_48_04_02_2012.log'
Вы также можете использовать TimedRotatingFileHandler
, который будет обрабатывать дату и опрокидывание каждый день (или всякий раз вы хотите) для вас.
from logging.handlers import TimedRotatingFileHandler
fh = TimedRotatingFileHandler('mylogfile', when='midnight')
По умолчанию формат будет зависеть от интервала опроса:
Система сохранит старые файлы журналов, добавив расширения к имени файла. Расширения основаны на дате и времени, используя формат strftime
%Y-%m-%d_%H-%M-%S
или его ведущую часть, в зависимости от интервала опрокидывания.
Но вы можете изменить это, как показано здесь, выполнив что-то вроде:
from logging.handlers import TimedRotatingFileHandler
fh = TimedRotatingFileHandler('mylogfile', when='midnight')
fh.suffix = '%Y_%m_%d.log'
Да. Посмотрите API-интерфейс datetime, в частности strftime
.
from datetime import datetime
print datetime.now().strftime("%d_%m_%Y")
from time import strftime
fh = logging.FileHandler(strftime("mylogfile_%H_%M_%m_%d_%Y.log"))
Мы можем использовать datetime.now(), чтобы получить текущую метку времени. Вот мой код, который я использую для создания файла журнала с отметкой времени -
import logging
from datetime import datetime
LOG_FILENAME = datetime.now().strftime('D:/log/logfile_%H_%M_%S_%d_%m_%Y.log')
for handler in logging.root.handlers[:]:
logging.root.removeHandler(handler)
logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG)
logging.info('Forecastiong Job Started...')
logging.debug('abc method started...')
Чтобы напечатать hour
, minutes
, day
, month
и year
, используйте следующую инструкцию
от datetime
и datetime
datetime
импорта datetime
print datetime.now().strftime("%H_%M_%d_%m_%Y")