How to Customize the time format for Python logging? How to Customize the time format for Python logging? python python

How to Customize the time format for Python logging?


From the official documentation regarding the Formatter class:

The constructor takes two optional arguments: a message format string and a date format string.

So change

# create formatterformatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s")

to

# create formatterformatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s",                              "%Y-%m-%d %H:%M:%S")


Using logging.basicConfig, the following example works for me:

logging.basicConfig(    filename='HISTORYlistener.log',    level=logging.DEBUG,    format='%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s',    datefmt='%Y-%m-%d %H:%M:%S',)

This allows you to format & config all in one line. A resulting log record looks as follows:

2014-05-26 12:22:52.376 CRITICAL historylistener - main: History log failed to start


To add to the other answers, here are the variable list from Python Documentation.

Directive   Meaning Notes%a  Locale’s abbreviated weekday name.   %A  Locale’s full weekday name.  %b  Locale’s abbreviated month name.     %B  Locale’s full month name.    %c  Locale’s appropriate date and time representation.   %d  Day of the month as a decimal number [01,31].    %H  Hour (24-hour clock) as a decimal number [00,23].    %I  Hour (12-hour clock) as a decimal number [01,12].    %j  Day of the year as a decimal number [001,366].   %m  Month as a decimal number [01,12].   %M  Minute as a decimal number [00,59].  %p  Locale’s equivalent of either AM or PM. (1)%S  Second as a decimal number [00,61]. (2)%U  Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0.    (3)%w  Weekday as a decimal number [0(Sunday),6].   %W  Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.    (3)%x  Locale’s appropriate date representation.    %X  Locale’s appropriate time representation.    %y  Year without century as a decimal number [00,99].    %Y  Year with century as a decimal number.   %z  Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59].  %Z  Time zone name (no characters if no time zone exists).   %%  A literal '%' character.