1
0
mirror of https://github.com/craigerl/aprsd.git synced 2025-09-03 13:47:51 -04:00

Added new config to disable logging to console

This patch adds a new config setting to the logging
section that allows the user to disable logging to stdout.
This is useful for terminal UI apps :)
This commit is contained in:
Hemna 2025-02-26 17:41:40 -05:00
parent a3cda9f37d
commit 0fa5b07d4b
4 changed files with 67 additions and 55 deletions

View File

@ -13,35 +13,35 @@ from aprsd.utils import trace
CONF = cfg.CONF
home = str(Path.home())
DEFAULT_CONFIG_DIR = f"{home}/.config/aprsd/"
DEFAULT_SAVE_FILE = f"{home}/.config/aprsd/aprsd.p"
DEFAULT_CONFIG_FILE = f"{home}/.config/aprsd/aprsd.conf"
DEFAULT_CONFIG_DIR = f'{home}/.config/aprsd/'
DEFAULT_SAVE_FILE = f'{home}/.config/aprsd/aprsd.p'
DEFAULT_CONFIG_FILE = f'{home}/.config/aprsd/aprsd.conf'
F = t.TypeVar("F", bound=t.Callable[..., t.Any])
F = t.TypeVar('F', bound=t.Callable[..., t.Any])
common_options = [
click.option(
"--loglevel",
default="INFO",
'--loglevel',
default='INFO',
show_default=True,
type=click.Choice(
["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"],
['CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG'],
case_sensitive=False,
),
show_choices=True,
help="The log level to use for aprsd.log",
help='The log level to use for aprsd.log',
),
click.option(
"-c",
"--config",
"config_file",
'-c',
'--config',
'config_file',
show_default=True,
default=DEFAULT_CONFIG_FILE,
help="The aprsd config file to use for options.",
help='The aprsd config file to use for options.',
),
click.option(
"--quiet",
'--quiet',
is_flag=True,
default=False,
help="Don't log to stdout",
@ -59,7 +59,7 @@ class AliasedGroup(click.Group):
"""
def decorator(f):
aliases = kwargs.pop("aliases", [])
aliases = kwargs.pop('aliases', [])
cmd = click.decorators.command(*args, **kwargs)(f)
self.add_command(cmd)
for alias in aliases:
@ -77,7 +77,7 @@ class AliasedGroup(click.Group):
"""
def decorator(f):
aliases = kwargs.pop("aliases", [])
aliases = kwargs.pop('aliases', [])
cmd = click.decorators.group(*args, **kwargs)(f)
self.add_command(cmd)
for alias in aliases:
@ -101,36 +101,37 @@ def process_standard_options(f: F) -> F:
ctx = args[0]
ctx.ensure_object(dict)
config_file_found = True
if kwargs["config_file"]:
default_config_files = [kwargs["config_file"]]
if kwargs['config_file']:
default_config_files = [kwargs['config_file']]
else:
default_config_files = None
try:
CONF(
[],
project="aprsd",
project='aprsd',
version=aprsd.__version__,
default_config_files=default_config_files,
)
except cfg.ConfigFilesNotFoundError:
config_file_found = False
ctx.obj["loglevel"] = kwargs["loglevel"]
ctx.obj['loglevel'] = kwargs['loglevel']
# ctx.obj["config_file"] = kwargs["config_file"]
ctx.obj["quiet"] = kwargs["quiet"]
ctx.obj['quiet'] = kwargs['quiet']
log.setup_logging(
ctx.obj["loglevel"],
ctx.obj["quiet"],
ctx.obj['loglevel'],
ctx.obj['quiet'],
)
if CONF.trace_enabled:
trace.setup_tracing(["method", "api"])
trace.setup_tracing(['method', 'api'])
if not config_file_found:
LOG = logging.getLogger("APRSD") # noqa: N806
LOG = logging.getLogger('APRSD') # noqa: N806
LOG.error("No config file found!! run 'aprsd sample-config'")
del kwargs["loglevel"]
del kwargs["config_file"]
del kwargs["quiet"]
del kwargs['loglevel']
del kwargs['config_file']
del kwargs['quiet']
return f(*args, **kwargs)
return update_wrapper(t.cast(F, new_func), f)
@ -142,17 +143,17 @@ def process_standard_options_no_config(f: F) -> F:
def new_func(*args, **kwargs):
ctx = args[0]
ctx.ensure_object(dict)
ctx.obj["loglevel"] = kwargs["loglevel"]
ctx.obj["config_file"] = kwargs["config_file"]
ctx.obj["quiet"] = kwargs["quiet"]
ctx.obj['loglevel'] = kwargs['loglevel']
ctx.obj['config_file'] = kwargs['config_file']
ctx.obj['quiet'] = kwargs['quiet']
log.setup_logging(
ctx.obj["loglevel"],
ctx.obj["quiet"],
ctx.obj['loglevel'],
ctx.obj['quiet'],
)
del kwargs["loglevel"]
del kwargs["config_file"]
del kwargs["quiet"]
del kwargs['loglevel']
del kwargs['config_file']
del kwargs['quiet']
return f(*args, **kwargs)
return update_wrapper(t.cast(F, new_func), f)

View File

@ -9,7 +9,7 @@ from aprsd.packets import core
from aprsd.utils import keepalive_collector
CONF = cfg.CONF
LOG = logging.getLogger("APRSD")
LOG = logging.getLogger('APRSD')
class APRSClient:
@ -20,8 +20,8 @@ class APRSClient:
connected = False
login_status = {
"success": False,
"message": None,
'success': False,
'message': None,
}
filter = None
lock = threading.Lock()
@ -59,17 +59,20 @@ class APRSClient:
@property
def login_success(self):
return self.login_status.get("success", False)
return self.login_status.get('success', False)
@property
def login_failure(self):
return self.login_status["message"]
return self.login_status['message']
def set_filter(self, filter):
self.filter = filter
if self._client:
self._client.set_filter(filter)
def get_filter(self):
return self.filter
@property
def client(self):
if not self._client:
@ -80,16 +83,16 @@ class APRSClient:
try:
self._client = self.setup_connection()
if self.filter:
LOG.info("Creating APRS client filter")
LOG.info('Creating APRS client filter')
self._client.set_filter(self.filter)
except Exception as e:
LOG.error(f"Failed to create APRS client: {e}")
LOG.error(f'Failed to create APRS client: {e}')
self._client = None
raise
def stop(self):
if self._client:
LOG.info("Stopping client connection.")
LOG.info('Stopping client connection.')
self._client.stop()
def send(self, packet: core.Packet) -> None:
@ -103,16 +106,16 @@ class APRSClient:
@wrapt.synchronized(lock)
def reset(self) -> None:
"""Call this to force a rebuild/reconnect."""
LOG.info("Resetting client connection.")
LOG.info('Resetting client connection.')
if self._client:
self._client.close()
del self._client
self._create_client()
else:
LOG.warning("Client not initialized, nothing to reset.")
LOG.warning('Client not initialized, nothing to reset.')
# Recreate the client
LOG.info(f"Creating new client {self.client}")
LOG.info(f'Creating new client {self.client}')
@abc.abstractmethod
def setup_connection(self):

View File

@ -54,6 +54,11 @@ logging_opts = [
default=True,
help='Enable ANSI color codes in logging',
),
cfg.BoolOpt(
'enable_console_stdout',
default=True,
help='Enable logging to the console/stdout.',
),
]

View File

@ -84,15 +84,18 @@ def setup_logging(loglevel=None, quiet=False):
logging.getLogger(name).handlers = []
logging.getLogger(name).propagate = name not in disable_list
handlers = [
{
'sink': sys.stdout,
'serialize': False,
'format': CONF.logging.logformat,
'colorize': CONF.logging.enable_color,
'level': log_level,
},
]
handlers = []
if CONF.logging.enable_console_stdout:
handlers.append(
{
'sink': sys.stdout,
'serialize': False,
'format': CONF.logging.logformat,
'colorize': CONF.logging.enable_color,
'level': log_level,
},
)
if CONF.logging.logfile:
handlers.append(
{