Maybe it's Stockholm syndrome, but contrary to what seems like most people I don't actually mind the built in logging library. Sure, it reeks of its Java roots and can be a bit of a pain to set up configure, but once that's done it's incredibly flexible and generally works really well.
One of the main gripes I do have with it is its reliance on the old-school %-based formatting for log messages:
logger.debug("Invalid object '%s'", obj)
As there are real advantages to providing a template and object args separately, this is a bit of a shame since it pushes people to use pre-formatted strings without any args instead.
I fixed this for myself by writing bracelogger[0]. If this is a pain point for you too, you might find it useful.
Ex:
logger.debug("Invalid object of type {0.__class__.__name__}: {0}", obj)
One of the main gripes I do have with it is its reliance on the old-school %-based formatting for log messages:
As there are real advantages to providing a template and object args separately, this is a bit of a shame since it pushes people to use pre-formatted strings without any args instead.I fixed this for myself by writing bracelogger[0]. If this is a pain point for you too, you might find it useful.
Ex:
[0]: https://github.com/pR0Ps/bracelogger