On Apr 22, 12:57 pm, Miki <[EMAIL PROTECTED]> wrote:
> Hello,
>
>
>
> > So far so good. In the relevant applications, the code looks something
> > like this:
> > logging.config.fileConfig('log.ini')
> > logger = logging.getLogger('log.regular') <or> logger =
> > logging.getLogger('log.daemonic')
> > .. and start logging.
>
> > The thorn in my side is that after the fileConfig call, BOTH handlers
> > are instantiated, meaning both types of files are created for every
> > component, even if I don't need it: component.log (for the rotating
> > handler) and compenent.date.log (for the regular file handler).
>
> > ..So finally, here's my question:
> > Apart from splitting the logging configuration into two separate
> > files, is there any way to NOT create the file until you actually use
> > it?
>
> You can generate the .ini file on the fly and then load it:
>
> >>> log_ini = gen_log_ini(type) # type is either "deamon" or "regular"
> >>> atexit.register(lambda: remove(log_ini))
> >>> logging.config.fileConfig(log_ini)
>
> HTH,
> --
> Miki <[EMAIL PROTECTED]>http://pythonwise.blogspot.com


I think it misses the point of having a file to config..
It looks as if there's no solution. A peek at the logging module shows
this:
        klass = cp.get(sectname, "class")
        ...
        klass = eval(klass, vars(logging))
        args = cp.get(sectname, "args")
        args = eval(args, vars(logging))
        h = apply(klass, args)

Bah. I'll have to split them into two configuration files (or subclass
and have the respective file and rotating handlers lazy evaluate until
the actual log call is made).
Thanks though.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to