mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-13 15:57:14 +03:00
Implement a TRACE level of logging.
For things that are too spammy for DEBUG, but we might need them sometimes.
This commit is contained in:
parent
d8ea6a0a94
commit
46e3b3aff8
@ -44,6 +44,17 @@ from config import appcmdname, appname, config
|
||||
|
||||
_default_loglevel = logging.DEBUG
|
||||
|
||||
# Define a TRACE level
|
||||
LEVEL_TRACE = 5
|
||||
logging.addLevelName(LEVEL_TRACE, "TRACE")
|
||||
logging.TRACE = LEVEL_TRACE # type: ignore
|
||||
logging.Logger.trace = lambda self, message, *args, **kwargs: self._log( # type: ignore
|
||||
logging.TRACE, # type: ignore
|
||||
message,
|
||||
args,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
||||
class Logger:
|
||||
"""
|
||||
@ -66,9 +77,9 @@ class Logger:
|
||||
"""
|
||||
self.logger = logging.getLogger(logger_name)
|
||||
# Configure the logging.Logger
|
||||
# This needs to always be DEBUG in order to let DEBUG level messages
|
||||
# This needs to always be TRACE in order to let TRACE level messages
|
||||
# through to check the *handler* levels.
|
||||
self.logger.setLevel(logging.DEBUG)
|
||||
self.logger.setLevel(logging.TRACE) # type: ignore
|
||||
|
||||
# Set up filter for adding class name
|
||||
self.logger_filter = EDMCContextFilter()
|
||||
@ -102,8 +113,8 @@ class Logger:
|
||||
encoding='utf-8',
|
||||
delay=False
|
||||
)
|
||||
# Yes, we always want these rotated files to be at DEBUG level
|
||||
self.logger_channel_rotating.setLevel(logging.DEBUG)
|
||||
# Yes, we always want these rotated files to be at TRACE level
|
||||
self.logger_channel_rotating.setLevel(logging.TRACE) # type: ignore
|
||||
self.logger_channel_rotating.setFormatter(self.logger_formatter)
|
||||
self.logger.addHandler(self.logger_channel_rotating)
|
||||
|
||||
@ -118,10 +129,33 @@ class Logger:
|
||||
def get_streamhandler(self) -> logging.Handler:
|
||||
"""
|
||||
Obtain the self.logger_channel StreamHandler instance.
|
||||
|
||||
:return: logging.StreamHandler
|
||||
"""
|
||||
return self.logger_channel
|
||||
|
||||
def set_channels_loglevel(self, level: int) -> None:
|
||||
"""
|
||||
Set the specified log level on the channels.
|
||||
|
||||
:param level: A valid `logging` level.
|
||||
:return: None
|
||||
"""
|
||||
self.logger_channel.setLevel(level)
|
||||
self.logger_channel_rotating.setLevel(level)
|
||||
|
||||
def set_console_loglevel(self, level: int) -> None:
|
||||
"""
|
||||
Set the specified log level on the console channel.
|
||||
|
||||
:param level: A valid `logging` level.
|
||||
:return: None
|
||||
"""
|
||||
if self.logger_channel.level != logging.TRACE: # type: ignore
|
||||
self.logger_channel.setLevel(level)
|
||||
else:
|
||||
logger.trace("Not changing log level because it's TRACE") # type: ignore
|
||||
|
||||
|
||||
def get_plugin_logger(plugin_name: str, loglevel: int = _default_loglevel) -> logging.Logger:
|
||||
"""
|
||||
@ -335,7 +369,6 @@ class EDMCContextFilter(logging.Filter):
|
||||
|
||||
def get_main_logger() -> logging.Logger:
|
||||
"""Return the correct logger for how the program is being run."""
|
||||
|
||||
if not os.getenv("EDMC_NO_UI"):
|
||||
# GUI app being run
|
||||
return logging.getLogger(appname)
|
||||
|
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import argparse
|
||||
from builtins import str
|
||||
from builtins import object
|
||||
import sys
|
||||
@ -1059,7 +1060,32 @@ Locale LC_TIME: {locale.getlocale(locale.LC_TIME)}'''
|
||||
if __name__ == "__main__":
|
||||
enforce_single_instance()
|
||||
|
||||
from EDMCLogging import logger
|
||||
# Command-line arguments
|
||||
parser = argparse.ArgumentParser(
|
||||
prog=appname,
|
||||
description="Utilises Elite Dangerous Journal files and the Frontier "
|
||||
"Companion API (CAPI) service to gather data about a "
|
||||
"player's state and actions to upload to third-party sites "
|
||||
"such as EDSM, Inara.cz and EDDB."
|
||||
)
|
||||
|
||||
parser.add_argument('--trace',
|
||||
help='Set the Debug logging loglevel to TRACE',
|
||||
action='store_true',
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
from EDMCLogging import edmclogger, logger, logging
|
||||
# isort: off
|
||||
from logging import trace, TRACE # type: ignore # noqa: F401
|
||||
# isort: on
|
||||
|
||||
if args.trace:
|
||||
logger.setLevel(logging.TRACE)
|
||||
edmclogger.set_channels_loglevel(logging.TRACE)
|
||||
else:
|
||||
edmclogger.set_channels_loglevel(logging.DEBUG)
|
||||
|
||||
logger.info(f'Startup v{appversion} : Running on Python v{sys.version}')
|
||||
logger.debug(f'''Platform: {sys.platform}
|
||||
@ -1114,7 +1140,7 @@ sys.path: {sys.path}'''
|
||||
ui_scale = 100
|
||||
config.set('ui_scale', ui_scale)
|
||||
theme.default_ui_scale = root.tk.call('tk', 'scaling')
|
||||
logger.debug(f'Default tk scaling = {theme.default_ui_scale}')
|
||||
logger.trace(f'Default tk scaling = {theme.default_ui_scale}')
|
||||
theme.startup_ui_scale = ui_scale
|
||||
root.tk.call('tk', 'scaling', theme.default_ui_scale * float(ui_scale) / 100.0)
|
||||
app = AppWindow(root)
|
||||
|
4
prefs.py
4
prefs.py
@ -14,7 +14,7 @@ from typing import TYPE_CHECKING, Any, Callable, Optional, Type, Union
|
||||
|
||||
import myNotebook as nb # noqa: N813
|
||||
import plug
|
||||
from config import applongname, appname, appversion, config
|
||||
from config import applongname, appversion, config
|
||||
from EDMCLogging import edmclogger, get_main_logger
|
||||
from hotkey import hotkeymgr
|
||||
from l10n import Translations
|
||||
@ -1060,7 +1060,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
config.set('system_provider', self.system_provider.get())
|
||||
config.set('station_provider', self.station_provider.get())
|
||||
config.set('loglevel', self.select_loglevel.get())
|
||||
edmclogger.get_streamhandler().setLevel(self.select_loglevel.get())
|
||||
edmclogger.set_console_loglevel(self.select_loglevel.get())
|
||||
|
||||
lang_codes = {v: k for k, v in self.languages.items()} # Codes by name
|
||||
config.set('language', lang_codes.get(self.lang.get()) or '') # or '' used here due to Default being None above
|
||||
|
Loading…
x
Reference in New Issue
Block a user