Я пытаюсь написать свой собственный обработчик журналов Python, который будет записывать записи журнала в базу данных, используя SQLAlchemy, который также будет использовать свой собственный механизм ведения журнала в терминале (используя echo = True).
Этотекущий простой + пример кода:
Base = declarative_base()
engine = create_engine('sqlite:///logdb.db', echo=True)
Session = sessionmaker(bind=engine)
class Log(Base):
__tablename__ = 'Log'
id = Column(Integer, primary_key=True)
Log_message = Column(String)
Timestamp = Column(String)
def __init__(self, log_message=None, timestamp=None):
self.Log_message = log_message
self.Timestamp = timestamp
class DBHandler(logging.Handler):
def __init__(self):
logging.Handler.__init__(self)
format = logging.Formatter('%(asctime)s - %(message)s')
self.setFormatter(format)
def emit(self, record):
self.format(record)
log = Log(
log_message=record.__dict__['message'],
timestamp=record.__dict__['asctime']
)
session = Session()
session.add(log)
session.commit()
def main():
dbhandler = DBHandler()
logging.getLogger().addHandler(dbhandler)
logging.getLogger().setLevel(logging.DEBUG)
logging.info('test_message')
Однако единственное сообщение журнала, которое я получаю в терминал, следующее:
2018-12-16 23:58:11,994 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
, и скрипт застревает в сеансе.строка commit ().
Возможно ли решить эту проблему?