Sunday, 15 August 2010

How to use python logging to log to files? -



How to use python logging to log to files? -

i want utilize python logging facility log output different files (each module own log file). therefore, adding next begin of each python module see examples:

... other imports ... import logging logger = logging.getlogger('factory') fh = logging.filehandler('log/factory.log') fh.setlevel(logging.debug) formatter = logging.formatter('%(asctime)s %(levelname)s: %(funcname)s:%(lineno)d %(message)s') fh.setformatter(formatter) logger.addhandler(fh) ... code ...

and utilize logger.info("text") log messages. however, no info written file named log/factory.log although beingness created! directory log exists , have permission write directory. using logging facility basicconfig works fine...

update

looks it's not logging because logging level of logger set logging.warn. must explicitly set level on logger logging.debug well. think log/factory.log file not beingness created because log messages not making point yet. see http://dbgr.cc/v live demo of code below:

import logging import os os.makedirs("log") logger = logging.getlogger('factory') fh = logging.filehandler('log/factory.log') fh.setlevel(logging.debug) formatter = logging.formatter('%(asctime)s %(levelname)s: %(funcname)s:%(lineno)d %(message)s') fh.setformatter(formatter) logger.addhandler(fh) # notice warning message written logger.debug("debug message") logger.warn("warning message") logger.info("info message") open("log/factory.log", "r") f: print f.read() # update level on logger logging.debug: logger.setlevel(logging.debug) logger.debug("debug message") logger.warn("warning message") logger.info("info message") open("log/factory.log", "r") f: print f.read()

demo code below @ http://dbgr.cc/7:

import logging import os os.makedirs("log") formatter = logging.formatter('%(asctime)s %(levelname)s: %(funcname)s:%(lineno)d %(message)s') # create logger 'spam_application' logger = logging.getlogger('factory') logger.setlevel(logging.debug) fh = logging.filehandler('log/factory.log') fh.setlevel(logging.debug) fh.setformatter(formatter) # can see things happen in stdout/stderr ch = logging.streamhandler() ch.setlevel(logging.debug) ch.setformatter(formatter) # add together handlers logger logger.addhandler(fh) logger.addhandler(ch) logger.debug("debug log msg") logger.info("info log msg") logger.warn("warning log msg") open("log/factory.log", "r") f: print f.read()

python logging

No comments:

Post a Comment