python - Is there a way to change the filemode for a logger object that is not configured using basicConfig? -


if create logger object using logger = logging.getlogger("name") unable change filemode append('a') write ('w'). can if use root logger basicconfig, lot of system debug messages being logged when want own messages beginning @ debug level.

i hoping either (1) change filemode own logger object 'w' or (2) add filter root logger. possible filter out these debug messages root logger?

    def create_log():     # create logger "sample app"      # create logger "sample app"     logger = logging.getlogger('automated_testing')     logger.setlevel(logging.debug)      # create file handler logs debug messages     fh = logging.filehandler('results.log')     fh.setlevel(logging.debug)     # create console handler higher log level     ch = logging.streamhandler(stream=sys.stdout)     ch.setlevel(logging.debug)     # create formatter , add handlers     formatter = logging.formatter('[%(asctime)s] %(levelname)8s --- %(message)s ' +                                   '(%(filename)s:%(lineno)s)',datefmt='%y-%m-%d %h:%m:%s')     fh.setformatter(formatter)     ch.setformatter(formatter)     # add handlers logger     logger.addhandler(ch)     logger.addhandler(fh)      return logger 

something like:

import sys import logging  def create_logger():     # create logger "sample app"     logger = logging.getlogger('automated_testing')     logger.setlevel(logging.debug)      # create file handler logs debug messages     fh = logging.filehandler('results.log', mode='w')     fh.setlevel(logging.debug)      # create console handler higher log level     ch = logging.streamhandler(stream=sys.stdout)     ch.setlevel(logging.info)      # create formatter , add handlers     formatter = logging.formatter('[%(asctime)s] %(levelname)8s --- %(message)s ' +                                   '(%(filename)s:%(lineno)s)',datefmt='%y-%m-%d %h:%m:%s')     fh.setformatter(formatter)     ch.setformatter(formatter)      # add handlers logger     logger.addhandler(ch)     logger.addhandler(fh)      return logger  logger = create_logger()   logger.log(logging.notset,   "notset   message - 0") logger.log(logging.debug,    "debug    message - 10") logger.log(logging.info,     "info     message - 20") logger.log(logging.warning,  "warning  message - 30") logger.log(logging.critical, "critical message - 40") 

prints stdout:

 [2015-03-16 17:51:08]     info --- info     message - 20 (temp3.py:34) [2015-03-16 17:51:08]  warning --- warning  message - 30 (temp3.py:35) [2015-03-16 17:51:08] critical --- critical message - 40 (temp3.py:36) 

writes (not appends) results.log:

 [2015-03-16 17:51:08]    debug --- debug    message - 10 (temp3.py:33) [2015-03-16 17:51:08]     info --- info     message - 20 (temp3.py:34) [2015-03-16 17:51:08]  warning --- warning  message - 30 (temp3.py:35) [2015-03-16 17:51:08] critical --- critical message - 40 (temp3.py:36) 

debug+ logged in results.txt while info+ send stdout.

note notset log entry passed root logger then, since don't have handlers on root logger, discarded.


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -

ios - Possible to get UIButton sizeThatFits to work? -