首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python日志记录重复输出

Python日志记录重复输出
EN

Stack Overflow用户
提问于 2018-07-20 06:43:06
回答 1查看 282关注 0票数 1

我研究python日志已经有几天了,今天我在工作中测试它。我正在测试以下代码:

代码语言:javascript
复制
import inspect
import logging

def customLogger(FileHandlerlogLevel, ConsoleHandlerLogLevel, file_path_and_name):
    '''
    - logLevel input values:  DEBUG, INFO, WARNING, ERROR, CRITICAL
    '''

    # Gets the name of the class / method from where this method is called
    loggerName = inspect.stack()[1][3]

    logger = logging.getLogger(loggerName)

    logger.setLevel(logging.DEBUG)

    fileHandler = logging.FileHandler(file_path_and_name, mode="w")
    fileHandler.setLevel(FileHandlerlogLevel)

    formatter = logging.Formatter('%(name)s - %(lineno)d - %(asctime)s - %(levelname)s - %(message)s',
                                  datefmt="%m/%d/%Y %I:%M:%S %p")
    fileHandler.setFormatter(formatter)

    logger.addHandler(fileHandler)    

    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(ConsoleHandlerLogLevel)
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)


    return logger

test_logger = customLogger(logging.DEBUG,  logging.DEBUG,  "test_loggerv01.log")
test_logger.info("test 01")

所以基本上我对一个给定的记录器有两个处理程序。当我第一次运行脚本时,控制台(Spyder)显示如下:

代码语言:javascript
复制
In [1]: runfile('C:/Users/aardem/Python_AA/AB/Corproates_Prj/custom_logger_andrea_v02.py', wdir='C:/Users/aardem/Python_AA/AB/Corproates_Prj')
<module> - 36 - 07/19/2018 06:32:22 PM - INFO - test 01

到目前一切尚好。然后,我将信息消息更改为"test 02“(代码的最后一行),保存并重新运行脚本。现在,控制台显示以下内容:

代码语言:javascript
复制
In [2]: runfile('C:/Users/aardem/Python_AA/AB/Corproates_Prj/custom_logger_andrea_v02.py', wdir='C:/Users/aardem/Python_AA/AB/Corproates_Prj')
<module> - 36 - 07/19/2018 06:32:34 PM - INFO - test 02
<module> - 36 - 07/19/2018 06:32:34 PM - INFO - test 02

同样,如果我将脚本的最后一行更改为:

代码语言:javascript
复制
test_logger.info("test 03")

然后保存并重新运行脚本,这是新的控制台输出:

代码语言:javascript
复制
In [3]: runfile('C:/Users/aardem/Python_AA/AB/Corproates_Prj/custom_logger_andrea_v02.py', wdir='C:/Users/aardem/Python_AA/AB/Corproates_Prj')
<module> - 37 - 07/19/2018 06:38:20 PM - INFO - test 03
<module> - 37 - 07/19/2018 06:38:20 PM - INFO - test 03
<module> - 37 - 07/19/2018 06:38:20 PM - INFO - test 03

谁能帮我解决这个意想不到的问题?保存在文件"test_loggerv01.log“中的数据也会出现同样的问题。谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-07-20 06:45:49

每次在同一IPython会话中使用runfile运行该文件时,都会向同一记录器添加越来越多的处理程序。老操纵者不会消失。

所有这些重复的处理程序都将处理该记录器的日志记录,从而导致重复的日志处理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51432668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档