added logging

This commit is contained in:
Daniel Fichtinger 2025-07-01 18:31:07 -04:00
parent 4fdb3365b9
commit d1480df28a
5 changed files with 52 additions and 23 deletions

View file

@ -8,6 +8,9 @@ from zona.config import ZonaConfig
from zona import util
from pathlib import Path
from rich import print
from zona.log import get_logger
logger = get_logger()
class ZonaBuilder:
@ -39,9 +42,7 @@ class ZonaBuilder:
destination=destination,
url=str(destination.relative_to(layout.output)),
)
if path.name.endswith(
".md"
) and not path.is_relative_to(
if path.name.endswith(".md") and not path.is_relative_to(
layout.root / "content" / "static"
):
item.metadata, item.content = parse_metadata(path)
@ -56,13 +57,11 @@ class ZonaBuilder:
item.copy = False
name = destination.stem
if name == "index":
item.destination = (
item.destination.with_suffix(".html")
item.destination = item.destination.with_suffix(
".html"
)
else:
relative = path.relative_to(base).with_suffix(
""
)
relative = path.relative_to(base).with_suffix("")
name = relative.stem
item.destination = (
layout.output
@ -74,9 +73,7 @@ class ZonaBuilder:
layout.output
)
item.url = (
""
if rel_url == Path(".")
else rel_url.as_posix()
"" if rel_url == Path(".") else rel_url.as_posix()
)
items.append(item)
# print(item)
@ -122,5 +119,7 @@ class ZonaBuilder:
util.copy_static_file(item.source, dst)
def build(self):
logger.debug("Discovering...")
self._discover()
logger.debug("Building...")
self._build()

View file

@ -3,9 +3,12 @@ from pathlib import Path
from zona import server
from zona.builder import ZonaBuilder
from zona.layout import initialize_site
from zona.log import setup_logging
app = typer.Typer()
setup_logging("DEBUG")
@app.command()
def build(root: Path | None = None, output: Path | None = None):

25
src/zona/log.py Normal file
View file

@ -0,0 +1,25 @@
import logging
from typing import Literal
from rich.logging import RichHandler
_LOGGER_NAME = "zona"
def setup_logging(
level: Literal["INFO", "DEBUG", "WARN", "ERROR"] = "INFO",
):
logger = logging.getLogger(_LOGGER_NAME)
logger.setLevel(level.upper())
logger.propagate = False
if not logger.handlers:
handler = RichHandler(rich_tracebacks=True, show_path=False)
handler.setLevel(level.upper())
formatter = logging.Formatter("%(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
def get_logger(name: str = _LOGGER_NAME) -> logging.Logger:
return logging.getLogger(name)

View file

@ -14,6 +14,9 @@ from pygments.formatters import HtmlFormatter
from zona import util
from zona.models import Item
from zona.log import get_logger
logger = get_logger()
class ZonaRenderer(HTMLRenderer):
@ -28,7 +31,6 @@ class ZonaRenderer(HTMLRenderer):
super().__init__()
self.resolve: bool = resolve
if self.resolve:
# print("Resolve is set")
assert source is not None
assert layout is not None
assert item_map is not None
@ -57,11 +59,11 @@ class ZonaRenderer(HTMLRenderer):
item = self.item_map.get(resolved)
if item:
href = util.normalize_url(item.url)
print(
logger.debug(
f"Link in file {self.source}: {_href} resolved to {href}"
)
else:
print(
logger.debug(
f"Warning: resolved path {resolved} not found in item map"
)
body: Any = self.render_children(element)

View file

@ -2,7 +2,6 @@ import signal
import os
import sys
from types import FrameType
from rich import print
from http.server import ThreadingHTTPServer, SimpleHTTPRequestHandler
import threading
from typing import override
@ -10,6 +9,9 @@ from watchdog.observers import Observer
from zona.builder import ZonaBuilder
from watchdog.events import FileSystemEventHandler, FileSystemEvent
from pathlib import Path
from zona.log import get_logger
logger = get_logger()
class QuietHandler(SimpleHTTPRequestHandler):
@ -44,26 +46,24 @@ class ZonaReloadHandler(FileSystemEventHandler):
@override
def on_modified(self, event: FileSystemEvent):
if not self._should_ignore(event):
print(f"Modified: {event.src_path}, rebuilding...")
logger.info(f"Modified: {event.src_path}, rebuilding...")
self.builder.build()
@override
def on_created(self, event: FileSystemEvent):
if not self._should_ignore(event):
print(f"Modified: {event.src_path}, rebuilding...")
logger.info(f"Modified: {event.src_path}, rebuilding...")
self.builder.build()
def run_http_server(
dir: Path, host: str = "localhost", port: int = 8000
):
def run_http_server(dir: Path, host: str = "localhost", port: int = 8000):
os.chdir(dir)
handler = QuietHandler
httpd = ZonaServer(
server_address=(host, port), RequestHandlerClass=handler
)
print(f"Serving {dir} at http://{host}:{port}")
print(f"Exit with <c-c>")
logger.info(f"Serving {dir} at http://{host}:{port}")
logger.info(f"Exit with <c-c>")
httpd.serve_forever()
@ -91,7 +91,7 @@ def serve(
observer.start()
def shutdown_handler(_a: int, _b: FrameType | None):
print("Shutting down...")
logger.info("Shutting down...")
observer.stop()
signal.signal(signal.SIGINT, shutdown_handler)