diff --git a/pkgs/clan-app/clan_app/middleware/logging.py b/pkgs/clan-app/clan_app/middleware/logging.py index e356e8034..d7f936d9d 100644 --- a/pkgs/clan-app/clan_app/middleware/logging.py +++ b/pkgs/clan-app/clan_app/middleware/logging.py @@ -1,5 +1,7 @@ import io import logging +import os +import sys import types from dataclasses import dataclass from typing import Any @@ -91,12 +93,18 @@ class LoggingMiddleware(Middleware): exc_val: BaseException | None, exc_tb: types.TracebackType | None, ) -> None: + orig_stderr = None if self.handler: self.handler.root_logger.removeHandler(self.handler.new_handler) self.handler.new_handler.close() if self.original_ctx: set_async_ctx(self.original_ctx) + orig_stderr = self.original_ctx.stderr if self.log_f: + # Replace the file descriptor instead of closing it + stderr = orig_stderr or sys.stderr + new_fd = stderr.fileno() + os.dup2(self.log_f.fileno(), new_fd) self.log_f.close() # Register the logging context manager