En Thu, 05 Jun 2008 04:14:07 -0300, <[EMAIL PROTECTED]> escribió:

Hi everyone

I'm trying to use python's logging mechanism to write exception data into a log file with the TimedRotatingFileHandler but the rotating of the file is not working... Here's a bit of sample code of what I'm doing (just the interessting part of it ;-)):

import logging
import logging.handlers as handlers
class MyError(Exception):

    fileName = os.path.join(os.path.dirname(__file__), 'Error.log')

    def __init__(self):
fileHandler = handlers.TimedRotatingFileHandler(MyError.fileName, when='m', interval=1, backupCount=1) formatter = logging.Formatter('\n%(name)-12s: <%(asctime)s> %(levelname)-8s %(message)s')
        fileHandler.setFormatter(formatter)
        logging.getLogger('').addHandler(fileHandler)
        ## Reference to the logger object
        self.logger = logging.getLogger('FileLogger')
        self.logger.setLevel(logging.INFO)

class MyInheritedError(MyError):
    def __init__(self):
        MyError.__init__(self)
        self.logger.error("some stupid text :-)")

The error classes do write into the log file, however there's no rotating. No new file is created (and old ones renamed) nor are there any old log entries deleted/replaced... Does anyone have any idea what I could be missing? Might it be a problem due to the fact that these classes inherit from "Exception"?

How do you use that class? raise MyInheritedError(...)? So you're creating the handler and logger and all that stuff when the exception is raised? Looks really really strange... Don't inherit from Exception - set up your handlers and loggers at the start of the application, then just call getLogger(...).error(some message). A logger called 'FileLogger' is suspicious too - *handlers* determine where the log info goes, or how it is processed; *loggers* determine the part of the application from which the the message originates (a subsystem like "database", or "client.db", or perhaps just the module name).

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to