I want to print the current timestamp, when an event succeeded or not in my python script. By only adding…
datetime.datetime.now().strftime("%d.%b %Y %H:%M:%S")
…. at the beginning of each line, te same date appears in every line
[INFO] 04.Feb 2015 20:49:41: cl1 [ OK ] 04.Feb 2015 20:49:41: 8.8.8.8 ONLINE! [INFO] 04.Feb 2015 20:49:41: cl2 [ OK ] 04.Feb 2015 20:49:41: 8.8.8.8 ONLINE! [INFO] 04.Feb 2015 20:49:41: cl3 [ OK ] 04.Feb 2015 20:49:41: 8.8.8.8 ONLINE!
(I added time.sleep(5)in between)
My next idea was to create a function, calling the current time, but i’m failing at embedding this function to the printcommand.
File rs.py
OK =   "[" + bc.OKGREEN + " OK "  + bc.ENDC + "] " + datetime.datetime.now().strftime("%d.%b %Y %H:%M:%S")
INFO = "[" + bc.OKBLUE  + "INFO"  + bc.ENDC + "] " + datetime.datetime.now().strftime("%d.%b %Y %H:%M:%S")
WARN = "[" + bc.WARN    + "WARN"  + bc.ENDC + "] " + datetime.datetime.now().strftime("%d.%b %Y %H:%M:%S")
ERR =  "[" + bc.ERR     + "FAIL"  + bc.ENDC + "] " + datetime.datetime.now().strftime("%d.%b %Y %H:%M:%S")
DEB =  "[" + bc.HEADER  + "DEBUG" + bc.ENDC + "] " + datetime.datetime.now().strftime("%d.%b %Y %H:%M:%S")
File myapp.py
import rs # importing rs.py print rs.OK + hostname + "is up!" time.sleep(3) print rs.ERR+ hostname + "is down!"
Is printing:
>>> [INFO] 04.Feb 2015 20:49:41: xxx is up! >>> [ERR ] 04.Feb 2015 20:49:41: xxx is down!
Advertisement
Answer
Before the first time you log anything do this:
logging.basicConfig(
    format='%(asctime)s %(levelname)-8s %(message)s',
    level=logging.INFO,
    datefmt='%Y-%m-%d %H:%M:%S')
Example on the REPL:
>>> import logging
>>> logging.basicConfig(
...         format='%(asctime)s %(levelname)-8s %(message)s',
...         level=logging.INFO,
...         datefmt='%Y-%m-%d %H:%M:%S')
>>> 
>>> logging.info('an info messge')
2017-05-25 00:58:28 INFO     an info messge
>>> logging.debug('a debug messag is not shown')
>>>