├── README.md └── sqlite_handler.py /README.md: -------------------------------------------------------------------------------- 1 | SQLite handler 2 | ============= 3 | 4 | SQLite handler allow your application to write log messages directly to sqlite database. 5 | 6 | Usage 7 | ----- 8 | logger = logging.getLogger('LoggerName') 9 | logger.setLevel(logging.DEBUG) 10 | logger.addHandler(SQLiteHandler('debug_log.sqlite')) 11 | logger.debug('Debug message') 12 | -------------------------------------------------------------------------------- /sqlite_handler.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # 4 | # Found it in the internet and modified for my own 5 | # Amka [meamka@ya.ru] 6 | # 7 | 8 | import logging 9 | import os 10 | import sqlite3 11 | from datetime import datetime 12 | 13 | class SQLiteHandler(logging.Handler): # Inherit from logging.Handler 14 | """ 15 | Logging handler that write logs to SQLite DB 16 | """ 17 | def __init__(self, filename): 18 | global db 19 | # run the regular Handler __init__ 20 | logging.Handler.__init__(self) 21 | # Our custom argument 22 | db = sqlite3.connect(filename) # might need to use self.filename 23 | db.execute("CREATE TABLE IF NOT EXISTS debug(date datetime, loggername text, filename, srclineno integer, func text, level text, msg text)") 24 | db.commit() 25 | 26 | def emit(self, record): 27 | # record.message is the log message 28 | thisdate = datetime.now() 29 | db.execute( 30 | 'INSERT INTO debug(date, loggername, filename, srclineno, func, level, msg) VALUES(?,?,?,?,?,?,?)', 31 | ( 32 | thisdate, 33 | record.name, 34 | os.path.abspath(record.filename), 35 | record.lineno, 36 | record.funcName, 37 | record.levelname, 38 | record.msg, 39 | ) 40 | ) 41 | db.commit() 42 | 43 | 44 | if __name__ == '__main__': 45 | # Create a logging object (after configuring logging) 46 | logger = logging.getLogger('someLoggerNameLikeDebugOrWhatever') 47 | logger.setLevel(logging.DEBUG) 48 | logger.addHandler(SQLiteHandler('debugLog.sqlite')) 49 | logger.debug('Test 1') 50 | logger.warning('Some warning') 51 | logger.error('Alarma!') 52 | --------------------------------------------------------------------------------