How to write a warning to my log file?

Jay Loden python at jayloden.com
Sat Jul 28 14:13:48 EDT 2007


MarkyMarc wrote:
> Hi All,
> 
> A small newbie Q.
> 
> I have made a nice log function in me program. The program writes some
> data to me mysql database.
> When I write to the database I get som warnings back.
> 
> Have do I write these to me log file?
> I know I have to use the the warnings api. But I can not figure out
> how to use it.
> Is there anyone take might give me a small example.
> 
> THX all :-)

It looks like what you need to do is override the warnings module's showwarning function:

showwarning(message, category, filename, lineno[, file])
    Write a warning to a file. The default implementation calls 
    formatwarning(message, category, filename, lineno) and writes 
    the resulting string to file, which defaults to sys.stderr. 
    You may replace this function with an alternative implementation 
    by assigning to warnings.showwarning.


Example:

#!/usr/bin/python

import warnings

def mywarn(message, category, filename, lineno, file="warnings.log"):
    handle = open(file, 'a')
    handle.write(warnings.formatwarning(message, category, filename, lineno))
    handle.close()

warnings.showwarning = mywarn

#now test it
warnings.warn('test warn message')

-Jay



More information about the Python-list mailing list