Skip to content

Commit b95cec4

Browse files
authored
Merge pull request #16 from Msameim181/feat/custome_handler
Feat/custome handler
2 parents d536f17 + a827c1d commit b95cec4

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "chromatrace"
7-
version = "0.2.15"
7+
version = "0.2.16"
88
description = "Advanced Python logging with tracing, coloring and FastAPI, Django, and SocketIO integrations"
99
readme = "README.md"
1010
authors = [

src/chromatrace/logging_config.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,25 @@ def get_logger(self, name: str) -> logging.Logger:
4040
# Add handlers if they don't exist
4141
if not logger.handlers:
4242
self._setup_handlers(logger)
43+
self._setup_custom_handlers(logger)
4344

4445
return logger
4546

47+
def _setup_custom_handlers(self, logger: logging.Logger):
48+
if not hasattr(self.settings, "custom_handlers"):
49+
return
50+
51+
for handler in self.settings.custom_handlers:
52+
if not isinstance(handler, logging.Handler):
53+
continue
54+
formatter = self._get_formatter(
55+
colored=self.settings.use_console_colored_formatter
56+
)
57+
self._set_logger_settings(handler, formatter, logger)
58+
4659
def _set_logger_settings(
4760
self,
48-
handler: logging.handlers,
61+
handler: logging.Handler,
4962
formatter: logging.Formatter,
5063
logger: logging.Logger,
5164
):

src/chromatrace/logging_settings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from typing import Literal, Optional
55

66
import click
7-
from pydantic import BaseModel
7+
from pydantic import BaseModel, Field
88

99

1010
class LoggingSettings(BaseModel):
@@ -26,6 +26,7 @@ class LoggingSettings(BaseModel):
2626
use_syslog_colored_formatter: bool = False
2727
use_file_colored_formatter: bool = False
2828
show_process_id: bool = False
29+
custom_handlers: list = Field(default_factory=list)
2930

3031
def __init__(self, **data):
3132
super().__init__(**data)

0 commit comments

Comments
 (0)