(beginner) logging config not working

Discussion in 'Python' started by Unknown Moss, Apr 30, 2011.

  1. Unknown Moss

    Unknown Moss Guest

    Hi

    This is a beginner question. Thanks for the hand.

    I've been asked to maintain some poorly constructed python code.
    Logging is weak. Getting it to work with python logging
    programmatically was easy.

    However, I'd like to refactor all the logging code into configuration
    since I see the need for other handlers in the future (syslog and
    possibly email).

    For now I just want to get console and log file working, but I'm
    having problems with the log file. I'm trying some test code. Here's
    my test script (logging_example.py):

    import logging
    import logging.config

    def main():
    logging.config.fileConfig("logging.conf")
    logging.debug("debug check")
    logging.info("info check")
    logging.warn("warn check")
    logging.error("err check")
    logging.critical("crit check")

    if __name__ == "__main__":
    main()

    Here's my config (logging.conf):

    [loggers]
    keys=root,file

    [handlers]
    keys=console,file

    [formatters]
    keys=simple,detailed

    [logger_root]
    level=NOTSET
    handlers=console

    [logger_file]
    level=DEBUG
    handlers=file
    qualname=mylogger

    [formatter_simple]
    class=logging.Formatter
    format=%(asctime)s - %(name)s [%(levelname)s] - %(message)s

    [formatter_detailed]
    class=logging.Formatter
    format=%(asctime)s - %(name)s [%(levelname)s] - %(message)s

    [handler_console]
    class=logging.StreamHandler
    formatter=simple
    args=(sys.stdout,)

    [handler_file]
    class=FileHandler
    level=DEBUG
    formatter=detailed
    args=('logging_example.log', 'w')


    Output:

    $ python logging_example.py
    2011-04-29 17:07:01,923 - root [DEBUG] - debug check
    2011-04-29 17:07:01,986 - root [INFO] - info check
    2011-04-29 17:07:01,986 - root [WARNING] - warn check
    2011-04-29 17:07:01,986 - root [ERROR] - err check
    2011-04-29 17:07:02,000 - root [CRITICAL] - crit check

    The logging_example.log is created, but no entries are written to it.
    Based on this configuration I'd expect all the logging entries to be
    written to the file as well.

    Any ideas where I'm going awry?
     
    Unknown Moss, Apr 30, 2011
    #1
    1. Advertising

  2. Unknown Moss

    Peter Otten Guest

    Unknown Moss wrote:

    > Hi
    >
    > This is a beginner question. Thanks for the hand.
    >
    > I've been asked to maintain some poorly constructed python code.
    > Logging is weak. Getting it to work with python logging
    > programmatically was easy.
    >
    > However, I'd like to refactor all the logging code into configuration
    > since I see the need for other handlers in the future (syslog and
    > possibly email).
    >
    > For now I just want to get console and log file working, but I'm
    > having problems with the log file. I'm trying some test code. Here's
    > my test script (logging_example.py):
    >
    > import logging
    > import logging.config
    >
    > def main():
    > logging.config.fileConfig("logging.conf")
    > logging.debug("debug check")


    The above is a shortcut for

    root = logging.getLogger("")
    root.debug("debug check")

    i. e. you are logging to the root logger. According to your config file
    messages sent to the root logger are only handled by the console handler:

    > [logger_root]
    > level=NOTSET
    > handlers=console


    You can either change that by adding the file handler to the list of
    handlers for the root logger

    handlers=console,file

    in the config file or by directing your logging messages to "mylogger" with

    mylogger = logging.getLogger("mylogger")
    mylogger.debug("debug check")

    Note that loggers are organized in a tree; messages sent to mylogger will be
    propagated upwords to the root logger by default.
     
    Peter Otten, Apr 30, 2011
    #2
    1. Advertising

  3. Unknown Moss

    Unknown Moss Guest

    On Apr 29, 10:09 pm, Peter Otten <> wrote:
    > Unknown Moss wrote:
    > > Hi

    >
    > > This is a beginner question. Thanks for the hand.

    >
    > > I've been asked to maintain some poorly constructed python code.
    > > Logging is weak. Getting it to work with python logging
    > > programmatically was easy.

    >
    > > However, I'd like to refactor all the logging code into configuration
    > > since I see the need for other handlers in the future (syslog and
    > > possibly email).

    >
    > > For now I just want to get console and log file working, but I'm
    > > having problems with the log file. I'm trying some test code. Here's
    > > my test script (logging_example.py):

    >
    > > import logging
    > > import logging.config

    >
    > > def main():
    > >     logging.config.fileConfig("logging.conf")
    > >     logging.debug("debug check")

    >
    > The above is a shortcut for
    >
    > root = logging.getLogger("")
    > root.debug("debug check")
    >
    > i. e. you are logging to the root logger. According to your config file
    > messages sent to the root logger are only handled by the console handler:
    >
    > > [logger_root]
    > > level=NOTSET
    > > handlers=console

    >
    > You can either change that by adding the file handler to the list of
    > handlers for the root logger
    >
    > handlers=console,file
    >
    > in the config file or by directing your logging messages to "mylogger" with
    >
    > mylogger = logging.getLogger("mylogger")
    > mylogger.debug("debug check")
    >
    > Note that loggers are organized in a tree; messages sent to mylogger willbe
    > propagated upwords to the root logger by default.


    Thanks you Peter. That worked perfectly. It points out that I'm not
    really understanding the python logging concepts yet. I'll search for
    more details. I need pictures. :)

    Thanks again.
     
    Unknown Moss, Apr 30, 2011
    #3
  4. Unknown Moss

    Unknown Moss Guest

    On Apr 29, 10:09 pm, Peter Otten <> wrote:
    > Unknown Moss wrote:
    > > Hi

    >
    > > This is a beginner question. Thanks for the hand.

    >
    > > I've been asked to maintain some poorly constructed python code.
    > > Logging is weak. Getting it to work with python logging
    > > programmatically was easy.

    >
    > > However, I'd like to refactor all the logging code into configuration
    > > since I see the need for other handlers in the future (syslog and
    > > possibly email).

    >
    > > For now I just want to get console and log file working, but I'm
    > > having problems with the log file. I'm trying some test code. Here's
    > > my test script (logging_example.py):

    >
    > > import logging
    > > import logging.config

    >
    > > def main():
    > >     logging.config.fileConfig("logging.conf")
    > >     logging.debug("debug check")

    >
    > The above is a shortcut for
    >
    > root = logging.getLogger("")
    > root.debug("debug check")
    >
    > i. e. you are logging to the root logger. According to your config file
    > messages sent to the root logger are only handled by the console handler:
    >
    > > [logger_root]
    > > level=NOTSET
    > > handlers=console

    >
    > You can either change that by adding the file handler to the list of
    > handlers for the root logger
    >
    > handlers=console,file
    >
    > in the config file or by directing your logging messages to "mylogger" with
    >
    > mylogger = logging.getLogger("mylogger")
    > mylogger.debug("debug check")
    >
    > Note that loggers are organized in a tree; messages sent to mylogger willbe
    > propagated upwords to the root logger by default.


    Thanks you Peter. That worked perfectly. It points out that I'm not
    really understanding the python logging concepts yet. I'll search for
    more details. I need pictures. :)

    Thanks again.
     
    Unknown Moss, Apr 30, 2011
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Stefan Siegl
    Replies:
    0
    Views:
    969
    Stefan Siegl
    Aug 27, 2003
  2. janne
    Replies:
    0
    Views:
    9,542
    janne
    Sep 10, 2004
  3. Christoph Haas
    Replies:
    0
    Views:
    468
    Christoph Haas
    Jun 12, 2006
  4. CSharpner
    Replies:
    0
    Views:
    1,094
    CSharpner
    Apr 9, 2007
  5. Herman
    Replies:
    0
    Views:
    187
    Herman
    Feb 19, 2012
Loading...

Share This Page