Is this one or two files?

If the model is passing db to the logger then the db is closed when the 
first request responds.
The logger must make its own connection to the db and commit

On Friday, 11 May 2012 14:28:22 UTC-5, Yarin wrote:
>
> Here is my complete model code for a sqlite logging handler. This works 
> the first time the program is run, and after that I get an error:
>
> <class 'sqlite3.ProgrammingError'> Cannot operate on a closed database.
>
>
> *model mylogging.py:*
>
> import logging
> import logging.handlers
>
>
> class AppHandler(logging.Handler): # Inherit from logging.Handler
>     def __init__(self):
>  logging.Handler.__init__(self)
>  
>  self._db = db
>
>
>     def emit(self, record):
>  
>  args = {}
>  args['loggername'] = record.name
>  args['srclineno'] = record.lineno
>  args['func'] = record.funcName
>  args['level'] = record.levelname
>  args['msg'] = record.msg
>  try:
>  args['type'] = record.args[0]
>  except:
>  args['type'] = None
>  
>  self._db.log.insert(**args)
>
>
>
>
> log_db = DAL('sqlite://log.sqlite')
> log_db.define_table('log',
>  
>  Field('loggername', 'string'), #unique=True
>  Field('srclineno', 'string'), 
>  Field('func', 'string'), 
>  Field('level', 'string'), 
>  Field('msg', 'string'), 
>  Field('type', 'string'),
>  )
>
>
> import logging
> logger = logging.getLogger("web2py.app.myapp")
> logger.setLevel(logging.DEBUG)
>
>
> logger.addHandler(AppHandler(log_db))
> logger.debug('test log')
>
>
>
> I don't understand how I'm causing this, as all as im doing is creating a 
> second db instance and inserting using web2py DAL methods?
>
>

Reply via email to