[Mark Hammond wrote] > [Trent] > > > How about this (just an idea): > > def info(self, msgOrException, *args): > > if isinstance(msgOrException, Exception): > > # format the exception and > > msg, args = args[0], args[1:] > > else: > > # treat it like before > > > > try: > > # ... > > except Exception, ex: > > log.info(ex, "Eeeeek!") > > I don't like this. I think it rare you will want to log an exception with > no contextual message. But you still *can* log contextual information. What I meant and should have shown is: def info(self, firstarg, *args): if isinstance(firstarg, Exception): exc = firstarg msg, args = args[0], args[1:] else: exc = None msg, args = firstarg, args # ... (if exc is not None then format the exception and append to # msg%args try: # ... except Exception, ex: log.info(ex, "Eeeeek! %s %s %s", var1, var2, var3) basically this log() implementation is just trying to do: def log(self, exception, msg, *args): #... def log(self, msg, *args): #... ...in a language that does not support method overloading. Kinda klugdy? Maybe, though I would rather have: def exception(self, msg, *args, *kwargs): if not kwargs.has_key("level"): level = logging.ERROR else: level = kwargs["level"] #... than: def debugException(...) def infoException(...) def warnException(...) def errorException(...) def fatalException(...) def logException(...) [Guido on logging an exception at a level other than ERROR] > If this use case is rare enough, maybe a better approach would be to > let you format it yourself using the traceback module? then just have: def exception(self, msg, *args): #... Startin' to sound good to me. Trent -- Trent Mick TrentM@ActiveState.com
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4