在python中同时使用print和logging

时间:2015-02-12 12:12:06

标签: python logging

我试图将logger用于新模块。该模块将从顶级脚本调用,并且不使用记录器机制,而是使用原始打印语句。

当我从我的模块记录消息时,日志文件中缺少我的语句的某些字符。我的日志文件中缺少的字符数等于使用raw' print'打印的字符数。语句。

有人可以帮我解决这个问题 - ?

FYI ::

  1. Logger会将消息打印到我的顶级脚本正在使用的日志文件中。
  2. 修改顶级脚本以使用记录器而不是原始' print'是不可行的。语句。
  3. 我正在使用python 2.7.2
  4. 代码:
    记录器配置:

    def initLogger(filename='debug.log', log_console_level=logging.CRITICAL):
        """
        Initialise logging routines. From debug level all log messages goes to file.
        """
        global logger
        try:
            logger = logging.getLogger("")
            logger.setLevel(logging.DEBUG)
            handlers = []
            fh = logging.FileHandler(filename, "w")
            fh.setLevel(logging.DEBUG)
            ch = logging.StreamHandler()
            ch.setLevel(log_console_level)
            handlers.append(fh)
            handlers.append(ch)
            format = logging.Formatter('[%(levelname)-8s] :: %(message)s')
            for i in handlers:
                i.setFormatter(format)
                logger.addHandler(i)
            logger.propagate = False
    
        except IOError:
            logger = logging.getLogger("")
            logging.basicConfig(format = '[%(levelname)-8s] :: %(message)s',
                                level = logging.WARN)
            logger.warn("Couldn't open %s file. Will log only to the screen" % filename)
        logger.info("Started ")
        return logger
    

    顶级脚本中的声明:

    print "Version : 2.7.2"
    

    我的模块中的记录器语句:

    logger.info("Check-1 Pass\n")
    

    日志文件中的输出:

    Version : 2.7.2
    heck-1 Pass
    

    预期产出:

    Version : 2.7.2
    [INFO    ] :: Check-1 Pass
    

0 个答案:

没有答案