-
-
Save WorldException/11c1f4527ba94e2fc48dfc56a52e2fe6 to your computer and use it in GitHub Desktop.
Revisions
-
gmas revised this gist
Sep 27, 2015 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -4,6 +4,8 @@ import sqlite3 import logging import time __version__ = "0.1.0" initial_sql = """CREATE TABLE IF NOT EXISTS log( TimeStamp TEXT, -
gmas created this gist
Sep 27, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,87 @@ from __future__ import absolute_import, division, print_function, unicode_literals import sqlite3 import logging import time initial_sql = """CREATE TABLE IF NOT EXISTS log( TimeStamp TEXT, Source TEXT, LogLevel INT, LogLevelName TEXT, Message TEXT, Args TEXT, Module TEXT, FuncName TEXT, LineNo INT, Exception TEXT, Process INT, Thread TEXT, ThreadName TEXT )""" insertion_sql = """INSERT INTO log( TimeStamp, Source, LogLevel, LogLevelName, Message, Args, Module, FuncName, LineNo, Exception, Process, Thread, ThreadName ) VALUES ( '%(dbtime)s', '%(name)s', %(levelno)d, '%(levelname)s', '%(msg)s', '%(args)s', '%(module)s', '%(funcName)s', %(lineno)d, '%(exc_text)s', %(process)d, '%(thread)s', '%(threadName)s' ); """ class SQLiteHandler(logging.Handler): """ Thread-safe logging handler for SQLite. """ def __init__(self, db='app.db'): logging.Handler.__init__(self) self.db = db conn = sqlite3.connect(self.db) conn.execute(initial_sql) conn.commit() def format_time(self, record): """ Create a time stamp """ record.dbtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(record.created)) def emit(self, record): self.format(record) self.format_time(record) if record.exc_info: # for exceptions record.exc_text = logging._defaultFormatter.formatException(record.exc_info) else: record.exc_text = "" # Insert the log record sql = insertion_sql % record.__dict__ conn = sqlite3.connect(self.db) conn.execute(sql) conn.commit() # not efficient, but hopefully thread-safe