[Tutor] Logging exceptions, but getting stderr output instead
Peter Otten
__peter__ at web.de
Wed May 25 15:51:04 EDT 2016
Alex Hall wrote:
> Hello again list,
> I didn't expect to be back so soon. :) I'm trying to log my new script,
> and logger.info() works fine. However, logger.exception() doesn't; I see
> the exception print to stderr, and it never appears in the log. Oddly,
> info messages after that appear in the shell and in my log, whereas
> normally they are only in the log. Here's my logger setup:
>
> logger = logging.getLogger(appName)
> logger.setLevel(logging.DEBUG)
> infoLogFormatter = logging.Formatter("%(asctime)s\n%(name)s,
> %(levelname)s: %(message)s", datefmt = "%I:%M:%S %p, %B %d, %Y")
> infoLogFileName = appName+".log"
> infoFileHandler = logging.FileHandler(infoLogFileName, mode="w")
> infoFileHandler.level = logging.INFO
> infoFileHandler.setFormatter(infoLogFormatter)
> logger.addHandler(infoFileHandler)
>
> Then, I deliberately called a non-existant function:
>
> for rep in reps:
> try:
> workbook = xlsxwriter.Workbook(workbookName)
> worksheet = workbook.addWorksheet(rep.name) #should be add_worksheet, so
> this errors out
> except:
> logging.exception("Error generating spreadsheet for {name}".format(name=
> rep.name))
That should be logger.exception(...); logging.exception() logs to the root
logger.
Unless you know what you are doing I'd still suggest that you add your
handler(s) to the root logger. In most cases calling logging.basicConfig()
is probably good enough...
More information about the Tutor
mailing list