2021-11-08 11:52:41 -05:00
|
|
|
import logging
|
|
|
|
from logging import NullHandler
|
|
|
|
from logging.handlers import RotatingFileHandler
|
|
|
|
import queue
|
|
|
|
import sys
|
|
|
|
|
|
|
|
from aprsd import config as aprsd_config
|
2021-12-03 08:00:31 -05:00
|
|
|
from aprsd.logging import logging as aprsd_logging
|
2021-11-08 11:52:41 -05:00
|
|
|
|
|
|
|
|
|
|
|
LOG = logging.getLogger("APRSD")
|
|
|
|
logging_queue = queue.Queue()
|
|
|
|
|
|
|
|
|
|
|
|
# Setup the logging faciility
|
|
|
|
# to disable logging to stdout, but still log to file
|
|
|
|
# use the --quiet option on the cmdln
|
|
|
|
def setup_logging(config, loglevel, quiet):
|
|
|
|
log_level = aprsd_config.LOG_LEVELS[loglevel]
|
|
|
|
LOG.setLevel(log_level)
|
2021-12-03 08:00:31 -05:00
|
|
|
if config["aprsd"].get("rich_logging", False):
|
|
|
|
log_format = "%(message)s"
|
|
|
|
else:
|
|
|
|
log_format = config["aprsd"].get("logformat", aprsd_config.DEFAULT_LOG_FORMAT)
|
2021-11-08 11:52:41 -05:00
|
|
|
date_format = config["aprsd"].get("dateformat", aprsd_config.DEFAULT_DATE_FORMAT)
|
|
|
|
log_formatter = logging.Formatter(fmt=log_format, datefmt=date_format)
|
|
|
|
log_file = config["aprsd"].get("logfile", None)
|
2021-12-03 08:00:31 -05:00
|
|
|
|
|
|
|
rich_logging = False
|
|
|
|
if config["aprsd"].get("rich_logging", False):
|
|
|
|
rh = aprsd_logging.APRSDRichHandler(
|
|
|
|
show_thread=True, thread_width=15,
|
|
|
|
rich_tracebacks=True, omit_repeated_times=False,
|
|
|
|
)
|
|
|
|
rh.setFormatter(log_formatter)
|
|
|
|
LOG.addHandler(rh)
|
|
|
|
rich_logging = True
|
|
|
|
|
2021-11-08 11:52:41 -05:00
|
|
|
if log_file:
|
|
|
|
fh = RotatingFileHandler(log_file, maxBytes=(10248576 * 5), backupCount=4)
|
|
|
|
else:
|
|
|
|
fh = NullHandler()
|
|
|
|
|
|
|
|
fh.setFormatter(log_formatter)
|
|
|
|
LOG.addHandler(fh)
|
|
|
|
|
|
|
|
imap_logger = None
|
|
|
|
if config.get("aprsd.email.enabled", default=False) and config.get("aprsd.email.imap.debug", default=False):
|
|
|
|
|
|
|
|
imap_logger = logging.getLogger("imapclient.imaplib")
|
|
|
|
imap_logger.setLevel(log_level)
|
|
|
|
imap_logger.addHandler(fh)
|
|
|
|
|
|
|
|
if config.get("aprsd.web.enabled", default=False):
|
|
|
|
qh = logging.handlers.QueueHandler(logging_queue)
|
|
|
|
q_log_formatter = logging.Formatter(
|
|
|
|
fmt=aprsd_config.QUEUE_LOG_FORMAT,
|
|
|
|
datefmt=aprsd_config.QUEUE_DATE_FORMAT,
|
|
|
|
)
|
|
|
|
qh.setFormatter(q_log_formatter)
|
|
|
|
LOG.addHandler(qh)
|
|
|
|
|
2021-12-03 08:00:31 -05:00
|
|
|
if not quiet and not rich_logging:
|
2021-11-08 11:52:41 -05:00
|
|
|
sh = logging.StreamHandler(sys.stdout)
|
|
|
|
sh.setFormatter(log_formatter)
|
|
|
|
LOG.addHandler(sh)
|
|
|
|
if imap_logger:
|
|
|
|
imap_logger.addHandler(sh)
|
2021-11-10 11:52:51 -05:00
|
|
|
|
|
|
|
|
|
|
|
def setup_logging_no_config(loglevel, quiet):
|
|
|
|
log_level = aprsd_config.LOG_LEVELS[loglevel]
|
|
|
|
LOG.setLevel(log_level)
|
|
|
|
log_format = aprsd_config.DEFAULT_LOG_FORMAT
|
|
|
|
date_format = aprsd_config.DEFAULT_DATE_FORMAT
|
|
|
|
log_formatter = logging.Formatter(fmt=log_format, datefmt=date_format)
|
|
|
|
fh = NullHandler()
|
|
|
|
|
|
|
|
fh.setFormatter(log_formatter)
|
|
|
|
LOG.addHandler(fh)
|
|
|
|
|
|
|
|
if not quiet:
|
|
|
|
sh = logging.StreamHandler(sys.stdout)
|
|
|
|
sh.setFormatter(log_formatter)
|
|
|
|
LOG.addHandler(sh)
|