3.1.0 - 2023-05-28
This splits common funcitonality out to allow supporting other JSON encoders. Although this is a large refactor, backwards compatibility has been maintained.
Added
pythonjsonlogger.core
- more details below.pythonjsonlogger.defaults
module that provides many functions for handling unsupported types.- Orjson encoder support via
pythonjsonlogger.orjson.OrjsonFormatter
with the following additions:- bytes are URL safe base64 encoded.
- Exceptions are "pretty printed" using the exception name and message e.g.
"ValueError: bad value passed"
- Enum values use their value, Enum classes now return all values as a list.
- Tracebacks are supported
- Classes (aka types) are support
- Will fallback on
__str__
if available, else__repr__
if available, else will use__could_not_encode__
- MsgSpec encoder support via
pythonjsonlogger.msgspec.MsgspecFormatter
with the following additions:- Exceptions are "pretty printed" using the exception name and message e.g.
"ValueError: bad value passed"
- Enum classes now return all values as a list.
- Tracebacks are supported
- Classes (aka types) are support
- Will fallback on
__str__
if available, else__repr__
if available, else will use__could_not_encode__
- Note: msgspec only supprts enum values of type
int
orstr
jcrist/msgspec#680
- Exceptions are "pretty printed" using the exception name and message e.g.
Changed
pythonjsonlogger.jsonlogger
has been moved topythonjsonlogger.json
with core functionality moved topythonjsonlogger.core
.pythonjsonlogger.core.BaseJsonFormatter
properly supports alllogging.Formatter
arguments:fmt
is unchanged.datefmt
is unchanged.style
can now support non-standard arguments by settingvalidate
toFalse
validate
allows non-standardstyle
arguments or prevents callingvalidate
on standardstyle
arguments.default
is ignored.
pythonjsonlogger.json.JsonFormatter
default encodings changed:- bytes are URL safe base64 encoded.
- Exception formatting detected using
BaseException
instead ofException
. Now "pretty prints" the exception using the exception name and message e.g."ValueError: bad value passed"
- Dataclasses are now supported
- Enum values now use their value, Enum classes now return all values as a list.
- Will fallback on
__str__
if available, else__repr__
if available, else will use__could_not_encode__
- Renaming fields now preserves order (#7) and ignores missing fields (#6).
- Documentation
- Generated documentation using
mkdocs
is stored indocs/
- Documentation within
README.md
has been moved todocs/index.md
anddocs/qucikstart.md
. CHANGELOG.md
has been moved todocs/change-log.md
SECURITY.md
has been moved and replaced with a symbolic link todocs/security.md
.
- Generated documentation using
Deprecated
pythonjsonlogger.jsonlogger
is nowpythonjsonlogger.json
pythonjsonlogger.jsonlogger.RESERVED_ATTRS
is nowpythonjsonlogger.core.RESERVED_ATTRS
.pythonjsonlogger.jsonlogger.merge_record_extra
is nowpythonjsonlogger.core.merge_record_extra
.
Removed
- Python 3.7 support dropped
pythonjsonlogger.jsonlogger.JsonFormatter._str_to_fn
replaced withpythonjsonlogger.core.str_to_object
.