Re: improvements sought re. logging across modules

Discussion in 'Python' started by Chris “Kwpolska†Warrick, Apr 24, 2013.

  1. On Wed, Apr 24, 2013 at 6:54 PM, The Night Tripper <> wrote:
    > Hi all
    > I have a small suite of python modules, say
    >
    > A.py
    > B.py
    > C.py
    >
    > which can be invoked in a variety of ways. eg.
    >
    > 1) A.py is invoked directly; this imports and uses B.py and C.py
    >
    > 2) B.py is invoked; this imports and uses A.py and C.py
    >
    > I use the logging module in all of these python modules, and I want to be
    > able to use a single logger across the entire suite of whichever set of
    > scripts is running.
    >
    > The way I do this at the moment is to have a separate module mylogger.py:
    >
    > == mylogger.py ==
    >
    > import logging
    >
    > class MyLogger: #using python 2.4 ;-o
    > def __init__(self):
    > self.log = logging.getLogger(MY_APP_NAME)
    > def setupLogging(self):
    > self.log.setlevel(logging.DEBUG)
    > # ...
    >
    > # our singleton logging object
    > mylogger = Mylogger()
    > # EOF
    >
    > and then in my other modules A.py, B.py etc. I have something like:
    >
    > == A.py ==
    >
    > import mylogger
    > gLog = mylogger.mylogger
    >
    > if __name__ == "__main__":
    > gLog.setupLogging()
    > gLog.info("Module A running as main")
    > main()
    > #EOF
    >
    > == B.py ==
    >
    > import mylogger
    > gLog = mylogger.mylogger
    >
    > if __name__ == "__main__":
    > gLog.setupLogging()
    > gLog.info("Module B running as main")
    > main()
    > # EOF
    >
    > This works, but I can't help thinking I'm missing a trick here. Any
    > suggestions?
    >
    > Thanks
    > j^n
    >
    > --
    > http://mail.python.org/mailman/listinfo/python-list


    No need to do such magic. Just set logging up as you would normally.
    The first logging instance should pick up logs from everywhere. For
    example:

    === aurqt/aqds.py ===
    class AQDS:
    logging.basicConfig(format='%(asctime)-15s [%(levelname)-7s] '
    ':%(name)-10s: %(message)s',
    filename=os.path.join(confdir, 'aurqt.log'),
    level=logging.DEBUG)
    log = logging.getLogger('aurqt')
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    console.setFormatter(logging.Formatter('[%(levelname)-7s] '
    ':%(name)-10s: %(message)s'))
    logging.getLogger('').addHandler(console)
    log.info('*** aurqt v' + __version__)

    === pkgbuilder/pbds.py ===
    class PBDS:
    logging.basicConfig(format='%(asctime)-15s [%(levelname)-7s] '
    ':%(name)-10s: %(message)s',
    filename=os.path.join(confdir, 'pkgbuilder.log'),
    level=logging.DEBUG)
    log = logging.getLogger('pkgbuilder')
    log.info('*** PKGBUILDer v' + __version__)

    === aurqt/__init__.py ===
    from .aqds import AQDS
    DS = AQDS()
    import pkgbuilder # ↠also imports pkgbuilder.DS = pkgbuilder.pbds.PBDS()

    === bin/aurqt output ===
    [INFO ] :aurqt : *** aurqt v0.1.0
    [INFO ] :requests.packages.urllib3.connectionpool: Starting new
    HTTPS connection (1): aur.archlinux.org
    [WARNING] :pkgbuilder: tty-clock version is a date, ignored for downgrade.

    === {confdir}/aurqt.log ===
    2013-04-24 19:34:21,079 [INFO ] :aurqt : *** aurqt v0.1.0
    2013-04-24 19:35:19,096 [WARNING]
    :requests.packages.urllib3.connectionpool: Starting new HTTPS
    connection (1): aur.archlinux.org
    2013-04-24 19:35:21,004 [WARNING] :pkgbuilder: tty-clock version is a
    date, ignored for downgrade.

    --
    Kwpolska <http://kwpolska.tk> | GPG KEY: 5EAAEA16
    stop html mail | always bottom-post
    http://asciiribbon.org | http://caliburn.nl/topposting.html
     
    Chris “Kwpolska†Warrick, Apr 24, 2013
    #1
    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. Rotem
    Replies:
    23
    Views:
    660
    Trent Mick
    Sep 15, 2005
  2. Matthew Wilson
    Replies:
    2
    Views:
    282
    Martin v. Loewis
    May 11, 2010
  3. Jason Friedman
    Replies:
    0
    Views:
    175
    Jason Friedman
    Feb 3, 2012
  4. Fábio Santos
    Replies:
    0
    Views:
    87
    Fábio Santos
    Apr 24, 2013
  5. Dave Angel
    Replies:
    0
    Views:
    101
    Dave Angel
    Apr 24, 2013
Loading...

Share This Page