简体   繁体   English

Python:登录文件并执行sys.stdout

[英]Python: logging into a file and also do sys.stdout

I need to write a function that logs into a file (using logging module) and also prints the same content on the console at the same time. 我需要编写一个登录到文件中的函数(使用日志记录模块),并同时在控制台上打印相同的内容。

What I have is : 我所拥有的是:

def printScreenAndLog(msg):
   log = logging.getLogger()
   log.info(msg)
   now = str(datetime.datetime.now())
   print now,"%s" % msg

def main():
   options, args = usage()
   log = logging.getLogger("CMDR")

   log.setLevel(logging.DEBUG)
   fh = logging.FileHandler('cmdr.log')
   fh.setLevel(logging.DEBUG)
   formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
   fh.setFormatter(formatter)
   log.addHandler(fh)

   printScreenAndLog("Testing")

if __name__ == "__main__":
   main()

This function should do what you require: 此功能应满足您的要求:

def configure_logging():
    log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'

    # log to stdout
    logging.basicConfig(level=logging.DEBUG, format=log_format)

    # also log to file
    formatter = logging.Formatter(log_format)
    handler = logging.FileHandler("cmdr.log")
    handler.setLevel(logging.DEBUG)
    handler.setFormatter(formatter)
    logging.getLogger('').addHandler(handler)

did you try to set the logging level to info instead of debug? 您是否尝试将日志记录级别设置为info而不是debug?
or use log.debug(msg) in your printScreenAndLog function? 或在您的printScreenAndLog函数中使用log.debug(msg)?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM