Add full log config. Fixes #166

This commit is contained in:
Tulir Asokan
2018-07-12 22:47:40 +03:00
parent 2172587286
commit 042d89cf65
6 changed files with 52 additions and 23 deletions
+12 -15
View File
@@ -17,6 +17,7 @@
import argparse
import sys
import logging
import logging.config
import asyncio
import sqlalchemy as sql
@@ -29,6 +30,7 @@ from .base import Base
from .config import Config
from .matrix import MatrixHandler
from . import __version__
from .db import init as init_db
from .abstract_user import init as init_abstract_user
from .user import init as init_user, User
@@ -39,12 +41,6 @@ from .formatter import init as init_formatter
from .public import PublicBridgeWebsite
from .context import Context
log = logging.getLogger("mau")
time_formatter = logging.Formatter("[%(asctime)s] [%(levelname)s@%(name)s] %(message)s")
handler = logging.StreamHandler()
handler.setFormatter(time_formatter)
log.addHandler(handler)
parser = argparse.ArgumentParser(
description="A Matrix-Telegram puppeting bridge.",
prog="python -m mautrix-telegram")
@@ -69,14 +65,11 @@ if args.generate_registration:
print(f"Registration generated and saved to {config.registration_path}")
sys.exit(0)
if config["appservice.debug"]:
telethon_log = logging.getLogger("telethon")
telethon_log.addHandler(handler)
telethon_log.setLevel(logging.DEBUG)
log.setLevel(logging.DEBUG)
log.debug("Debug messages enabled.")
logging.config.dictConfig(config["logging"])
log = logging.getLogger("mau.init")
log.debug(f"Initializing mautrix-telegram {__version__}")
db_engine = sql.create_engine(config.get("appservice.database", "sqlite:///mautrix-telegram.db"))
db_engine = sql.create_engine(config["appservice.database"] or "sqlite:///mautrix-telegram.db")
db_factory = orm.sessionmaker(bind=db_engine)
db_session = orm.scoping.scoped_session(db_factory)
Base.metadata.bind = db_engine
@@ -112,9 +105,13 @@ with appserv.run(config["appservice.hostname"], config["appservice.port"]) as st
startup_actions.append(context.bot.start())
try:
log.debug("Initialization complete, running startup actions")
loop.run_until_complete(asyncio.gather(*startup_actions, loop=loop))
log.debug("Startup actions complete, now running forever")
loop.run_forever()
except KeyboardInterrupt:
for user in User.by_tgid.values():
user.stop()
log.debug("Keyboard interrupt received, stopping clients")
loop.run_until_complete(
asyncio.gather(*[user.stop() for user in User.by_tgid.values()], loop=loop))
log.debug("Clients stopped, shutting down")
sys.exit(0)
+2 -2
View File
@@ -118,8 +118,8 @@ class AbstractUser:
await self.start(delete_unless_authenticated=not even_if_no_session)
return self
def stop(self):
self.client.disconnect()
async def stop(self):
await self.client.disconnect()
self.client = None
# region Telegram update handling
+8 -2
View File
@@ -154,8 +154,6 @@ class Config(DictWithRecursion):
copy("appservice.public.prefix")
copy("appservice.public.external")
copy("appservice.debug")
copy("appservice.id")
copy("appservice.bot_username")
copy("appservice.bot_displayname")
@@ -218,6 +216,14 @@ class Config(DictWithRecursion):
copy("telegram.api_hash")
copy("telegram.bot_token")
if "appservice.debug" in self and "logging" not in self:
level = "DEBUG" if self["appservice.debug"] else "INFO"
base["logging.root.level"] = level
base["logging.loggers.mau.level"] = level
base["logging.loggers.telethon.level"] = level
else:
copy("logging")
self._data = base._data
self.save()
+1 -1
View File
@@ -145,7 +145,7 @@ class User(AbstractUser):
asyncio.ensure_future(self.post_login(), loop=self.loop)
elif delete_unless_authenticated:
self.log.debug(f"Unauthenticated user {self.name} start()ed, deleting session...")
self.client.disconnect()
await self.client.disconnect()
self.client.session.delete()
return self