@@ -117,14 +117,17 @@ def format(self, record: logging.LogRecord) -> str:
117117 json .loads (msg )
118118 return msg
119119 except json .JSONDecodeError , TypeError :
120- return json . dumps ( {
120+ result = {
121121 "timestamp" : datetime .fromtimestamp (record .created , tz = UTC ).isoformat (),
122122 "logger" : record .name ,
123123 "level" : record .levelname .lower (),
124124 "event" : msg ,
125125 "filename" : record .pathname .split ("/" )[- 1 ] if record .pathname else "" ,
126126 "lineno" : str (record .lineno ),
127- })
127+ }
128+ if record .exc_text :
129+ result ["traceback" ] = record .exc_text
130+ return json .dumps (result )
128131
129132
130133_initialized = False
@@ -157,7 +160,10 @@ def format(self, record: logging.LogRecord) -> str:
157160 reset = _RESET if color else ""
158161 filename = record .pathname .rsplit ("/" , 1 )[- 1 ] if record .pathname else ""
159162 msg = record .getMessage ()
160- return f"{ timestamp } { record .name } { color } { record .levelname } { reset } { msg } ({ filename } :{ record .lineno } )"
163+ result = f"{ timestamp } { record .name } { color } { record .levelname } { reset } { msg } ({ filename } :{ record .lineno } )"
164+ if record .exc_text :
165+ result = f"{ result } \n { record .exc_text } "
166+ return result
161167
162168
163169def _plain_text_renderer (_logger : Any , _method_name : str , event_dict : dict [str , Any ]) -> str :
@@ -167,7 +173,7 @@ def _plain_text_renderer(_logger: Any, _method_name: str, event_dict: dict[str,
167173 for key in ("logger" , "level" , "timestamp" ):
168174 event_dict .pop (key , None )
169175 if event_dict :
170- extras = " " .join (f"{ k } ={ v } " for k , v in event_dict .items ())
176+ extras = " " .join (f"{ k } ={ v !r } " for k , v in event_dict .items ())
171177 return f"{ event } [{ extras } ]"
172178 return str (event )
173179
@@ -216,7 +222,7 @@ def _log(self, level: str, msg: Any, *args: Any, **kwargs: Any) -> None:
216222 if _human_readable :
217223 std_logger = logging .getLogger (self .name )
218224 log_method = getattr (std_logger , level .lower ())
219- extra_str = " " .join (f"{ k } ={ v } " for k , v in kwargs .items ()) if kwargs else ""
225+ extra_str = " " .join (f"{ k } ={ v !r } " for k , v in kwargs .items ()) if kwargs else ""
220226 log_method (f"{ msg_str } { extra_str } " if extra_str else msg_str , stacklevel = 3 ) # noqa: FCN001
221227 else :
222228 log_method = getattr (self ._logger , level .lower ())
0 commit comments