Fix logging

This commit is contained in:
2025-05-13 21:54:05 +02:00
parent 197c8a7c05
commit 60026a485d

View File

@ -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,
)