Reputation: 191
I'm using python3. I want to print the time a script fails, as well as the corresponding exception in one line. Referring to this link & this one, I tried something like this, but the function didn't execute. Am I doing something wrong here? Would appreciate suggestions.
import atexit
import datetime
#define function to log when script ends due to error/failure
def f_log(date_and_time, error):
try:
print("")
except:
print('Script ended at date/time: %s with error %s.' % (date_and_time, error))
import atexit
atexit.register(f_log, date_and_time=datetime.datetime.now(), error=Exception)
print "Deliberate error" # Simple example of an error that should be caught & printed along with time when script fails.
# main body of script continues here
#
#
Upvotes: 0
Views: 442
Reputation: 5185
Your script has multiple problems. (datetime not imported, useless try/except in f_log, ...) The main issue is that a SyntaxError can't be handled. Try this version instead:
import atexit
import datetime
#define function to log when script ends due to error/failure
def f_log(date_and_time, error):
print('Script ended at date/time: %s with error %s.' % (date_and_time, error))
atexit.register(f_log, date_and_time=datetime.datetime.now(), error=Exception)
1/0 # Simple example of an error that should be caught & printed along with time when script fails.
Upvotes: 2