use util method to setup logger
This commit is contained in:
parent
a712b64798
commit
58f0875197
6 changed files with 66 additions and 157 deletions
|
|
@ -4,13 +4,13 @@ import importlib
|
|||
import pkgutil
|
||||
import socket
|
||||
import sys
|
||||
from logging.handlers import RotatingFileHandler
|
||||
from typing import Optional
|
||||
|
||||
from bumper.confserver import ConfServer
|
||||
from bumper.db import *
|
||||
from bumper.models import *
|
||||
from bumper.mqttserver import MQTTServer, MQTTHelperBot
|
||||
from bumper.util import get_logger, log_to_stdout
|
||||
from bumper.xmppserver import XMPPServer
|
||||
|
||||
|
||||
|
|
@ -24,8 +24,6 @@ def strtobool(strbool):
|
|||
# os.environ['PYTHONASYNCIODEBUG'] = '1' # Uncomment to enable ASYNCIODEBUG
|
||||
bumper_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
|
||||
|
||||
log_to_stdout = os.environ.get("LOG_TO_STDOUT")
|
||||
|
||||
# Set defaults from environment variables first
|
||||
# Folders
|
||||
if not log_to_stdout:
|
||||
|
|
@ -73,111 +71,7 @@ discovered_plugins = {
|
|||
|
||||
shutting_down = False
|
||||
|
||||
# Set format for all logs
|
||||
logformat = logging.Formatter(
|
||||
"[%(asctime)s] :: %(levelname)s :: %(name)s :: %(module)s :: %(funcName)s :: %(lineno)d :: %(message)s"
|
||||
)
|
||||
|
||||
bumperlog = logging.getLogger("bumper")
|
||||
if not log_to_stdout:
|
||||
bumper_rotate = RotatingFileHandler("logs/bumper.log", maxBytes=5000000, backupCount=5)
|
||||
bumper_rotate.setFormatter(logformat)
|
||||
bumperlog.addHandler(bumper_rotate)
|
||||
else:
|
||||
bumperlog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
# Override the logging level
|
||||
# bumperlog.setLevel(logging.INFO)
|
||||
|
||||
confserverlog = logging.getLogger("confserver")
|
||||
if not log_to_stdout:
|
||||
conf_rotate = RotatingFileHandler(
|
||||
"logs/confserver.log", maxBytes=5000000, backupCount=5
|
||||
)
|
||||
conf_rotate.setFormatter(logformat)
|
||||
confserverlog.addHandler(conf_rotate)
|
||||
else:
|
||||
confserverlog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
# Override the logging level
|
||||
# confserverlog.setLevel(logging.INFO)
|
||||
|
||||
mqttserverlog = logging.getLogger("mqttserver")
|
||||
if not log_to_stdout:
|
||||
mqtt_rotate = RotatingFileHandler(
|
||||
"logs/mqttserver.log", maxBytes=5000000, backupCount=5
|
||||
)
|
||||
mqtt_rotate.setFormatter(logformat)
|
||||
mqttserverlog.addHandler(mqtt_rotate)
|
||||
else:
|
||||
mqttserverlog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
# Override the logging level
|
||||
# mqttserverlog.setLevel(logging.INFO)
|
||||
|
||||
### Additional MQTT Logs
|
||||
translog = logging.getLogger("transitions")
|
||||
if not log_to_stdout:
|
||||
translog.addHandler(mqtt_rotate)
|
||||
else:
|
||||
translog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
translog.setLevel(logging.CRITICAL + 1) # Ignore this logger
|
||||
logging.getLogger("passlib").setLevel(logging.CRITICAL + 1) # Ignore this logger
|
||||
brokerlog = logging.getLogger("hbmqtt.broker")
|
||||
# brokerlog.setLevel(
|
||||
# logging.CRITICAL + 1
|
||||
# ) # Ignore this logger #There are some sublogs that could be set if needed (.plugins)
|
||||
if not log_to_stdout:
|
||||
brokerlog.addHandler(mqtt_rotate)
|
||||
else:
|
||||
brokerlog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
protolog = logging.getLogger("hbmqtt.mqtt.protocol")
|
||||
# protolog.setLevel(
|
||||
# logging.CRITICAL + 1
|
||||
# ) # Ignore this logger
|
||||
if not log_to_stdout:
|
||||
protolog.addHandler(mqtt_rotate)
|
||||
else:
|
||||
protolog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
clientlog = logging.getLogger("hbmqtt.client")
|
||||
# clientlog.setLevel(logging.CRITICAL + 1) # Ignore this logger
|
||||
if not log_to_stdout:
|
||||
clientlog.addHandler(mqtt_rotate)
|
||||
else:
|
||||
clientlog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
helperbotlog = logging.getLogger("helperbot")
|
||||
if not log_to_stdout:
|
||||
helperbot_rotate = RotatingFileHandler(
|
||||
"logs/helperbot.log", maxBytes=5000000, backupCount=5
|
||||
)
|
||||
helperbot_rotate.setFormatter(logformat)
|
||||
helperbotlog.addHandler(helperbot_rotate)
|
||||
else:
|
||||
helperbotlog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
# Override the logging level
|
||||
# helperbotlog.setLevel(logging.INFO)
|
||||
|
||||
boterrorlog = logging.getLogger("boterror")
|
||||
if not log_to_stdout:
|
||||
boterrorlog_rotate = RotatingFileHandler(
|
||||
"logs/boterror.log", maxBytes=5000000, backupCount=5
|
||||
)
|
||||
boterrorlog_rotate.setFormatter(logformat)
|
||||
boterrorlog.addHandler(boterrorlog_rotate)
|
||||
else:
|
||||
boterrorlog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
# Override the logging level
|
||||
# boterrorlog.setLevel(logging.INFO)
|
||||
|
||||
xmppserverlog = logging.getLogger("xmppserver")
|
||||
if not log_to_stdout:
|
||||
xmpp_rotate = RotatingFileHandler(
|
||||
"logs/xmppserver.log", maxBytes=5000000, backupCount=5
|
||||
)
|
||||
xmpp_rotate.setFormatter(logformat)
|
||||
xmppserverlog.addHandler(xmpp_rotate)
|
||||
else:
|
||||
xmppserverlog.addHandler(logging.StreamHandler(sys.stdout))
|
||||
# Override the logging level
|
||||
# xmppserverlog.setLevel(logging.INFO)
|
||||
|
||||
bumperlog = get_logger("bumper")
|
||||
logging.getLogger("asyncio").setLevel(logging.CRITICAL + 1) # Ignore this logger
|
||||
|
||||
mqtt_listen_port = 8883
|
||||
|
|
@ -206,7 +100,7 @@ async def start():
|
|||
)
|
||||
|
||||
if not bumper_listen:
|
||||
logging.log(logging.FATAL, "No listen address configured")
|
||||
bumperlog.fatal("No listen address configured")
|
||||
return
|
||||
|
||||
if not (
|
||||
|
|
@ -214,7 +108,7 @@ async def start():
|
|||
and os.path.exists(server_cert)
|
||||
and os.path.exists(server_key)
|
||||
):
|
||||
logging.log(logging.FATAL, "Certificate(s) don't exist at paths specified")
|
||||
bumperlog.fatal("Certificate(s) don't exist at paths specified")
|
||||
return
|
||||
|
||||
bumperlog.info("Starting Bumper")
|
||||
|
|
@ -324,10 +218,7 @@ def create_certs():
|
|||
|
||||
else:
|
||||
os.chdir(odir)
|
||||
logging.log(
|
||||
logging.FATAL,
|
||||
"Can't determine platform. Create certs manually and try again.",
|
||||
)
|
||||
bumperlog.fatal("Can't determine platform. Create certs manually and try again.")
|
||||
return
|
||||
|
||||
print("Certificates created")
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import aiohttp_jinja2
|
|||
import jinja2
|
||||
from aiohttp import web
|
||||
|
||||
from bumper import plugins
|
||||
from bumper import plugins, get_logger
|
||||
from bumper.models import *
|
||||
|
||||
|
||||
|
|
@ -23,14 +23,14 @@ class aiohttp_filter(logging.Filter):
|
|||
|
||||
if (
|
||||
record.levelno == 10
|
||||
and logging.getLogger("confserver").getEffectiveLevel() == 10
|
||||
and get_logger("confserver").getEffectiveLevel() == 10
|
||||
):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
confserverlog = logging.getLogger("confserver")
|
||||
confserverlog = get_logger("confserver")
|
||||
logging.getLogger("aiohttp.access").addFilter(
|
||||
aiohttp_filter()
|
||||
) # Add logging filter above to aiohttp.access
|
||||
|
|
|
|||
|
|
@ -7,9 +7,10 @@ from datetime import datetime, timedelta
|
|||
from tinydb import TinyDB, Query
|
||||
|
||||
import bumper
|
||||
from bumper import get_logger
|
||||
from bumper.models import VacBotClient, VacBotDevice, BumperUser, EcoVacsHomeProducts, OAuth
|
||||
|
||||
bumperlog = logging.getLogger("bumper")
|
||||
bumperlog = get_logger("bumper")
|
||||
|
||||
|
||||
def db_file():
|
||||
|
|
|
|||
|
|
@ -15,10 +15,11 @@ from hbmqtt.mqtt.constants import QOS_0
|
|||
from passlib.apps import custom_app_context as pwd_context
|
||||
|
||||
import bumper
|
||||
from bumper.util import get_logger
|
||||
|
||||
helperbotlog = logging.getLogger("helperbot")
|
||||
boterrorlog = logging.getLogger("boterror")
|
||||
mqttserverlog = logging.getLogger("mqttserver")
|
||||
mqttserverlog = get_logger("mqttserver")
|
||||
helperbotlog = get_logger("helperbot")
|
||||
boterrorlog = get_logger("boterror")
|
||||
|
||||
|
||||
class MQTTHelperBot:
|
||||
|
|
@ -31,7 +32,6 @@ class MQTTHelperBot:
|
|||
self.command_responses = []
|
||||
|
||||
async def start_helper_bot(self):
|
||||
|
||||
try:
|
||||
if self.Client is None:
|
||||
self.Client = MQTTClient(
|
||||
|
|
@ -49,24 +49,11 @@ class MQTTHelperBot:
|
|||
("iot/atr/+", QOS_0),
|
||||
]
|
||||
)
|
||||
|
||||
# except ConnectionRefusedError as e:
|
||||
# helperbotlog.Error(e)
|
||||
# pass
|
||||
|
||||
# except asyncio.CancelledError as e:
|
||||
# pass
|
||||
|
||||
# except hbmqtt.client.ConnectException as e:
|
||||
# helperbotlog.Error(e)
|
||||
# pass
|
||||
|
||||
except Exception as e:
|
||||
helperbotlog.exception("{}".format(e))
|
||||
|
||||
async def wait_for_resp(self, requestid):
|
||||
try:
|
||||
|
||||
t_end = (
|
||||
datetime.now() + timedelta(seconds=self.wait_resp_timeout_seconds)
|
||||
).timestamp()
|
||||
|
|
@ -84,29 +71,17 @@ class MQTTHelperBot:
|
|||
resp = {"id": requestid, "ret": "ok", "resp": resppayload}
|
||||
self.command_responses.remove(msg)
|
||||
return resp
|
||||
|
||||
return {
|
||||
"id": requestid,
|
||||
"errno": 500,
|
||||
"ret": "fail",
|
||||
"debug": "wait for response timed out",
|
||||
}
|
||||
except asyncio.CancelledError as e:
|
||||
except asyncio.CancelledError:
|
||||
helperbotlog.debug("wait_for_resp cancelled by asyncio")
|
||||
return {
|
||||
"id": requestid,
|
||||
"errno": 500,
|
||||
"ret": "fail",
|
||||
"debug": "wait for response timed out",
|
||||
}
|
||||
except Exception as e:
|
||||
helperbotlog.exception("{}".format(e))
|
||||
return {
|
||||
"id": requestid,
|
||||
"errno": 500,
|
||||
"ret": "fail",
|
||||
"debug": "wait for response timed out",
|
||||
}
|
||||
|
||||
return {
|
||||
"id": requestid,
|
||||
"errno": 500,
|
||||
"ret": "fail",
|
||||
"debug": "wait for response timed out",
|
||||
}
|
||||
|
||||
async def send_command(self, cmdjson, requestid):
|
||||
if not self.Client._handler.writer is None:
|
||||
|
|
|
|||
40
bumper/util.py
Normal file
40
bumper/util.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
import logging
|
||||
import os
|
||||
import sys
|
||||
from logging.handlers import RotatingFileHandler
|
||||
|
||||
from typing import MutableMapping
|
||||
|
||||
logformat = logging.Formatter(
|
||||
"[%(asctime)s] :: %(levelname)s :: %(name)s :: %(module)s :: %(funcName)s :: %(lineno)d :: %(message)s"
|
||||
)
|
||||
|
||||
__loggers: MutableMapping[str, logging.Logger] = {}
|
||||
log_to_stdout = os.environ.get("LOG_TO_STDOUT")
|
||||
|
||||
|
||||
def get_logger(name: str, rotate: RotatingFileHandler = None) -> logging.Logger:
|
||||
found_logger = __loggers.get(name)
|
||||
if found_logger:
|
||||
return found_logger
|
||||
|
||||
logger = logging.getLogger(name)
|
||||
|
||||
if not log_to_stdout:
|
||||
if not rotate:
|
||||
rotate = RotatingFileHandler(f"logs/{name}.log", maxBytes=5000000, backupCount=5)
|
||||
rotate.setFormatter(logformat)
|
||||
logger.addHandler(rotate)
|
||||
else:
|
||||
logger.addHandler(logging.StreamHandler(sys.stdout))
|
||||
|
||||
__loggers[name] = logger
|
||||
|
||||
if name == "mqttserver":
|
||||
get_logger("transitions", rotate).setLevel(logging.CRITICAL + 1) # Ignore this logger
|
||||
get_logger("passlib", rotate).setLevel(logging.CRITICAL + 1) # Ignore this logger
|
||||
get_logger("hbmqtt.broker", rotate)
|
||||
get_logger("hbmqtt.mqtt.protocol", rotate)
|
||||
get_logger("hbmqtt.client", rotate)
|
||||
|
||||
return logger
|
||||
|
|
@ -9,8 +9,10 @@ import ssl
|
|||
import bumper
|
||||
import asyncio
|
||||
|
||||
xmppserverlog = logging.getLogger("xmppserver")
|
||||
boterrorlog = logging.getLogger("boterror")
|
||||
from bumper import get_logger
|
||||
|
||||
xmppserverlog = get_logger("xmppserver")
|
||||
boterrorlog = get_logger("boterror")
|
||||
|
||||
|
||||
class XMPPServer:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue