In the spirit of CHB's recommendation, this is my proposal: Would an update/addition/alternative API to the logging module be considered for inclusion in the stdlib?
- Use properties and magic methods instead of getter and setter methods - Add flag tfor `sys.excepthook` to choose whether to route all unhandled exceptions to the root logger - PEP8ify to make source code more readable and "pretty" - Make module-level `getLogger()` a class singleton, as it's only to be used once (warrants further discussion; I don't know if this is unnecessary) - Provide context managers for loggers to prevent race conditions (e.g. rather than `getLogger()` have `with logger(__name__)" (warrants further discussion; I don't know if this is unnecessary) - Enable iteration over all existing loggers by writing `__len__`s and `__getitems__` for logging (warrants further discussion; I don't know if this is unnecessary) Again, these are just my thoughts. Mike Miller is right in that the `logging` module is EXTREMELY intimidating to the new user. This keeps new users from logging, which (arguably) should be done as best practice. On Mon, Aug 24, 2020 at 7:23 PM Adam Hendry <adam.grant.hen...@gmail.com> wrote: > Hello Everyone, > > Uh-oh, I think you misunderstood me. I was trying to be funny. Raymond > always does his "fist-slamming" thing in a funny way, so I was trying to > emulate that. I'm not mad. This is my first feature request post. > > The `logging` module works, so there's nothing that needs to be fixed. > Believe me, I'm a content-over-form programmer every day of the week and > twice on Sunday. We could make it more Pythonic though. > > One feature I would like to have added though is a flag I can set to route > all unhandled exceptions to the root logger. I need this for my production > GUIs, for example, and I have to override `sys.excepthook()` to get this to > work right now. Not a huge problem currently, but I think this would be a > nice addition to the module. > > Adam > > > > On Mon, Aug 24, 2020 at 4:43 PM Mike Miller <python-id...@mgmiller.net> > wrote: > >> >> On 2020-08-24 09:25, Christopher Barker wrote: >> > I agree about the heavy rhetoric, but the OP has a good point. I have >> often >> > thought the same thing. >> >> Yes, many folks have. I've thought about it a bit myself. >> >> The logging package is comprehensive, mature, *very* flexible, and >> Java-esque. >> I've come to appreciate it over the decades. >> >> My take is that the extensive flexibility was more important in the past, >> the >> Java-feel only mildly annoying. In the spirit of batteries-included it >> has tons >> of baked-in functionality like file rotation, talking to the network, and >> the NT >> event system. Though it sometimes made sense in the past, I argue most >> of the >> functionality is not necessary to have in the stdlib today. Result: >> >> - At the low/beginner end, the package and docs are simply overwhelming. >> - For the mid-size project, it duplicates functionality like the Unix >> logrotate >> and syslog programs. >> - At the high-end, folks have moved on to "the ELK stack" etc and hosted >> services. Few are using python for *everything* at a larger shop. >> >> The "12 factor app" pattern for modern services alludes to the latter >> point: >> >> https://12factor.net/logs >> A twelve-factor app never concerns itself with routing or storage of >> its >> output stream. It should not attempt to write to or manage logfiles. >> Instead, each running process writes its event stream, unbuffered, to >> stdout. During local development, the developer will view this >> stream in >> the foreground of their terminal to observe the app’s behavior. >> >> >> Therefore, a simple way to log to stdout without a lot of reading and >> boilerplate might be useful. >> >> This is what logging.basicConfig() was supposed to be, and it is close >> but >> doesn't quite hit the mark. The camelCase name is one small issue, it >> being >> buried under a mountain of docs is another. Needing to import constants >> is >> slightly annoying as well. It may be able to be improved doc-wise by >> putting it >> front and center on the first page of the logging docs. The TOC will >> still be >> overwhelming to the newcomer however. >> >> Proposed solution: a trivial pythonic wrapper module with another name >> and page >> in the docs. It says something like: >> >> >> log - Logging Quickstart Module >> ======================================= >> >> The log module is a simple interface meant to simplify logging for >> *applications,* rather than libraries. This distinction is >> important. >> >> Libraries should be handled as they always have, >> and no changes are necessary to continue to use logging with them:: >> >> # hellolib.py >> import logging >> >> logger = logging.getLogger(__name__) >> >> def hello_world(): >> logger.info('hello world!') >> >> >> For applications that simply want to log to standard out as would a >> modern >> service, initialize logging quickly with log:: >> >> # main.py >> import log >> import hellolib >> >> log.configure() # with good defaults >> >> hellolib.hello_world() >> >> >> To configure logging and use it in the main script, >> a slightly more complex version might look like this:: >> >> # main.py >> import log >> import hellolib >> >> logger = log.configure('debug', format='%(levelname)s >> %(message)s') >> >> logger.info('About to call hello_world()...') >> hellolib.hello_world() >> >> >> I've experimented a bit with a module on PyPi named "out," with similar >> ideas, >> though I probably have over-engineered it with ANSI colors and Unicode. >> >> -Mike >> _______________________________________________ >> Python-ideas mailing list -- python-ideas@python.org >> To unsubscribe send an email to python-ideas-le...@python.org >> https://mail.python.org/mailman3/lists/python-ideas.python.org/ >> Message archived at >> https://mail.python.org/archives/list/python-ideas@python.org/message/SOCHCQRUNGZE5JH5CE5X4577TXSS3OOU/ >> Code of Conduct: http://python.org/psf/codeofconduct/ >> >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/LHYWSLE6HBWEDDIVJRSRAHDD6E7WJ6MO/ Code of Conduct: http://python.org/psf/codeofconduct/