On Aug 17, 2010, at 9:16 PM, Yarin wrote:

> @Jonathan- Like your use of config files for default configurations,
> but beyond that I'm not clear on what your patch is meant to solve-
> What's your reason for introducing named loggers and sub-loggers at
> the site level?  Couldn't the root logger just handle all this?

The main purpose of the configuration file is to allow a site to configure the 
logging destination. The current logging all goes to stdout (which in the case 
of Fedora or RHEL, at least, is /dev/null for system-started daemons). The 
configuration file lets us log to files, rotating files, or syslog, local or 
remote.

The reason for named loggers is twofold. One is trivial: to identify the source 
of log messages. The other is not so trivial, but mainly for development: to 
let us have different log levels for different loggers. If I'm debugging URL 
rewrite, I can lower the level of the web2py.rewrite logger to (say) debug, 
without enabling all the other debug/info loggers in the system.

Note that having named loggers is a pretty trivial addition, once we have a 
config file; it's not central, but it's a distinct convenience.

Note also that we already have named loggers (eg Rocket and its kin), but no 
way to configure them.

> 
> My intention was to use named loggers to allow for logging control at
> the application level, but for site level logging I see no reason to
> stray from root.
> 
> @Iceberg- Yeah, I played around with abstracting
> get_configured_logger() into a contrib module, but it got messy
> because
> a) The request object we use to get application name and log file path
> isn't available outside the mvc classes, and would have to be passed
> in.
> b) More importantly, it killed the flexibility of being able to do
> custom configuration, use custom or multiple handlers, etc.
> 
> The GAEHandler and others I include in the link are useful, but
> they're not web2py specific so Massimo might not want to clutter the
> framework with them.
> 
> On Aug 17, 2:32 pm, Iceberg <iceb...@21cn.com> wrote:
>> Nice work, Yarin!  You use a more decent way, 
>> logging.getLogger(request.application), to achive app-wide logger. It is 
>> better than my cache.ram() trick. Oh, I was so blind, man. :-)
>> 
>> And I wish GAEHandler and get_configured_logger() could go to web2py trunk, 
>> and the scaffold's models/model.py contains just one extra line:
>> 
>>     logger = get_configured_logger(folder = 'static', maxBytes=10240000, 
>> backupCount=5)
>> 
>> so it will be even easier to use.
>> 
>> Best regards,
>>                             Iceberg, 2010-Aug-18, 02:20(AM), Wed
>> 
>> 
>> 
>> ----------------------- Original Message -----------------------
>> From:    Yarin <ykess...@gmail.com>
>> To:      web2py-users <web2py@googlegroups.com>
>> 
>> Cc:      iceb...@21cn.com
>> Date:    Mon, 16 Aug 2010 13:31:16 -0700 (PDT)
>> Subject: Logging in web2py
>> -------------------
>> 
>>> I've posted an updated slice with an in-depth treatment of logging in
>>> web2py.
>>> http://web2pyslices.com/main/slices/take_slice/91
>> 
>>> Based on our earlier discussion
>>> http://groups.google.com/group/web2py/browse_thread/thread/d3b534113a...
>> 
>>> The slice addresses the issues of application-level logging, once-only
>>> configuration, and simpler syntax. It offers an approach that fully
>>> leverages Python's native logging capabilities, allows for full
>>> flexibility in configuration, and doesn't interfere with existing
>>> logging implementations.
>> 
>>> Some notes:
>>> -I decided against creating a separate contrib module for the code as
>>> it would impede flexibility and obscure the simplicity of solution.
>>> If included in the framework, I think it should be as model code.
>>> -I abandoned the cache approach to creating singleton loggers, and
>>> just inspect handlers instead.  (Logger caching was causing problems
>>> on GAE)
>> 
>>> Let me know what you think.  Thanks Massimo, Iceberg...


Reply via email to