Skip to content

Commit 82738da

Browse files
committed
add level and name to log
1 parent 84441e4 commit 82738da

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

pp/log.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
```
2727
'''
2828

29-
from dataclasses import asdict, dataclass, is_dataclass, field
3029
from datetime import datetime
3130
import io
3231
import json
@@ -50,13 +49,13 @@ class LogLevel:
5049

5150
class LogFormatter(logging.Formatter):
5251
'Custom log formatter that formats log messages as JSON, aka "Structured Logging".'
53-
def __init__(self, *args, defaults: dict = field(default_factory=dict), **kwargs):
52+
def __init__(self, defaults: dict = {}):
5453
'''
5554
Initializes the log formatter with optional default context.
5655
- `defaults` is a dictionary of default context values to include in every log message.
5756
'''
5857
self.defaults = defaults
59-
super().__init__(*args, **kwargs)
58+
super().__init__()
6059

6160
def format(self, record) -> str:
6261
'Formats the log message as JSON.'
@@ -73,9 +72,11 @@ def format(self, record) -> str:
7372
record.msg = json.dumps(
7473
{
7574
'timestamp': datetime.now().isoformat(),
75+
'level': record.levelname,
76+
'name': record.name,
7677
'msg': record.msg,
77-
'data': {'args': args} if args else {} | kwargs or {},
78-
'context': self.defaults or {},
78+
'event': {'args': args} if args else {} | kwargs or {},
79+
**({'context': self.defaults} if self.defaults else {}),
7980
},
8081
default=_json_default,
8182
)
@@ -84,10 +85,10 @@ def format(self, record) -> str:
8485

8586

8687
def _getLogger(
87-
name: str,
88-
level: int = logging.CRITICAL,
88+
name: str,
89+
level: int = logging.CRITICAL,
8990
handlers: list[logging.Handler] = [],
90-
context: dict = field(default_factory=dict),
91+
context: dict = {},
9192
) -> logging.Logger:
9293
'''
9394
Creates a logger with the given name, level, and handlers.
@@ -128,11 +129,11 @@ def _getLogger(
128129

129130

130131
def getLogger(
131-
name: str,
132-
level: int = logging.INFO,
133-
stream: io.TextIOBase = sys.stderr,
134-
files: dict[LogLevel, str] = dict(),
135-
context: dict = field(default_factory=dict),
132+
name: str,
133+
level: int = logging.INFO,
134+
stream: io.TextIOBase = sys.stderr,
135+
files: dict[LogLevel, str] = {},
136+
context: dict = {},
136137
) -> logging.Logger:
137138
'''
138139
Creates a logger with the given name, level, and handlers.

0 commit comments

Comments
 (0)