From 60026a485dee792a324759690acbce5d2abdf5fe Mon Sep 17 00:00:00 2001 From: Allan Eising Date: Tue, 13 May 2025 21:54:05 +0200 Subject: [PATCH] Fix logging --- .../src/sshecret_admin/core/cli.py | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/packages/sshecret-admin/src/sshecret_admin/core/cli.py b/packages/sshecret-admin/src/sshecret_admin/core/cli.py index 2e9df1a..3772a5f 100644 --- a/packages/sshecret-admin/src/sshecret_admin/core/cli.py +++ b/packages/sshecret-admin/src/sshecret_admin/core/cli.py @@ -2,17 +2,18 @@ import asyncio import code -from collections.abc import Awaitable import logging +from collections.abc import Awaitable from typing import Any, cast + import click -from sshecret_admin.services.admin_backend import AdminBackend import uvicorn from pydantic import ValidationError from sqlmodel import Session, create_engine, select -from sshecret_admin.auth.models import init_db, User, PasswordDB from sshecret_admin.auth.authentication import hash_password +from sshecret_admin.auth.models import PasswordDB, User, init_db from sshecret_admin.core.settings import AdminServerSettings +from sshecret_admin.services.admin_backend import AdminBackend handler = logging.StreamHandler() formatter = logging.Formatter( @@ -20,6 +21,12 @@ formatter = logging.Formatter( ) handler.setFormatter(formatter) +LOG = logging.getLogger() +LOG.addHandler(handler) + +LOG.setLevel(logging.INFO) + + def create_user(session: Session, username: str, password: str) -> None: """Create a user.""" hashed_password = hash_password(password) @@ -33,20 +40,18 @@ def create_user(session: Session, username: str, password: str) -> None: @click.pass_context def cli(ctx: click.Context, debug: bool) -> None: """Sshecret Admin.""" - LOG = logging.getLogger() - LOG.addHandler(handler) - if debug: - click.echo("Setting logging to debug level") - LOG.setLevel(logging.DEBUG) - else: - LOG.setLevel(logging.INFO) try: settings = AdminServerSettings() # pyright: ignore[reportCallIssue] except ValidationError as e: raise click.ClickException( "Error: One or more required environment options are missing." ) from e + + if debug: + click.echo("Setting logging to debug level") + LOG.setLevel(logging.DEBUG) + settings.debug = True ctx.obj = settings @@ -110,10 +115,22 @@ def cli_delete_user(ctx: click.Context, username: str) -> None: @click.option("--port", default=8822, type=click.INT) @click.option("--dev", is_flag=True) @click.option("--workers", type=click.INT) -def cli_run(host: str, port: int, dev: bool, workers: int | None) -> None: +@click.pass_context +def cli_run( + ctx: click.Context, host: str, port: int, dev: bool, workers: int | None +) -> None: """Run the server.""" + settings = cast(AdminServerSettings, ctx.obj) + log_level = "info" + if settings.debug: + log_level = "debug" uvicorn.run( - "sshecret_admin.core.main:app", host=host, port=port, reload=dev, workers=workers + "sshecret_admin.core.main:app", + host=host, + port=port, + reload=dev, + workers=workers, + log_level=log_level, )