繁体   English   中英

为什么记录不考虑我的配置?

Why is logging not considering my configurations?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想使用日志记录库在我正在运行脚本的控制台和日志文件中打印日志消息。

但是,我面临两个问题:

1)setLevel函数似乎不起作用

2)当我在控制台上打印日志消息时,似乎存储两次运行的日志消息的缓冲区没有刷新。 我应该如何处置干净的StreamHandler?

为了解决第一个问题,我尝试将记录器级别更改为最低级别(logging.DEBUG),但是它不起作用

为了解决第二个问题,我已经尝试了以下方法:

1)在声明“ Stream_log_handler = logging.StreamHandler(sys.stdout)”之前使用sys.stdout.flush()

2)logger.propagate =假

3)Stream_log_handler = logging.StreamHandler(sys.stdout)

handlers = logger.handlers处理程序中的处理程序:logger.removeHandler(handler)

4)logging.shutdown()

这些都不成功。

这是我的代码的一部分:

import logging
import sys

logger = logging.getLogger(__name__)
formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(name)s:%(message)s')
level = 'DEBUG'

file_log_handler = logging.FileHandler('logging_test.log')
file_log_handler.setLevel(logging.DEBUG)
file_log_handler.setFormatter(formatter)
logger.addHandler(file_log_handler)

stream_log_handler = logging.StreamHandler(sys.stdout)
stream_log_handler.setLevel(logging.DEBUG)
stream_log_handler.setFormatter(formatter)
logger.addHandler(stream_log_handler)

def add(x,y):
    """Add function"""
    result = x+y
    logger.info('Add result : {}'.format(result))
    return result

def substract(x,y):
    """Substract function"""
    result = x-y
    logger.debug('Substract result : {}'.format(result))
    return result

def multiply(x,y):
    """Multiply function"""
    result = x*y
    logger.warning('Multiply result : {}'.format(result))
    return result

def divide(x,y):
    """Divide function"""
    try:
        result = x-y
        logger.debug('Divide result : {}'.format(result))
    except ZeroDivisionError:
        logger.error('Tried to divide by zero')
    else:
        return result


num_1 = 10
num_2 = 5

add_result = add(num_1, num_2)

sub_result = substract(num_1, num_2)

mul_result = multiply(num_1, num_2)

div_result = divide(num_1, num_2)

在控制台中,我得到:

  • 在第一次运行时:

在[3]中:runfile('...')

2019-09-18 21:56:56,636:警告: 主要 :相乘结果:50

  • 在第二次运行中:

在[4]中:runfile('...')

2019-09-18 21:56:56,636:警告: 主要 :相乘结果:50

2019-09-18 21:56:56,636:警告: 主要 :相乘结果:50

  • 在第三轮:

在[4]中:runfile('...')

2019-09-18 21:56:56,636:警告: 主要 :相乘结果:50

2019-09-18 21:56:56,636:警告: 主要 :相乘结果:50

2019-09-18 21:56:56,636:警告: 主要 :相乘结果:50

  • 等等

为什么记录消息从一次运行堆叠到另一次? 为什么只打印警告级别的消息?

1 个回复

您只在两个处理程序上设置了级别,而不在记录器本身上设置了级别。

logger = logging.getLogger(__name__)
formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(name)s:%(message)s')

file_log_handler = logging.FileHandler('logging_test.log')
file_log_handler.setLevel(logging.DEBUG)
file_log_handler.setFormatter(formatter)
logger.addHandler(file_log_handler)

stream_log_handler = logging.StreamHandler(sys.stdout)
stream_log_handler.setLevel(logging.DEBUG)
stream_log_handler.setFormatter(formatter)
logger.addHandler(stream_log_handler)

logger.setLevel(logging.DEBUG)
1 updatesystem 不考虑配置 json

我正在尝试使用 json 配置从命令行执行系统更新,但似乎无论我做什么,该命令都执行完全相同的操作,我想这是使用默认平台设置运行更新。 例如,当我尝试在没有必要数据的情况下执行更新时(json 配置中的“essential”:“false”),也正在运行基本的impexes。 我尝试使用无效的 ...

2021-03-05 15:26:34 2 57   hybris
2 不考虑Nginx配置而缓存的HTML文件

我以最基本的nginx.conf示例为例,尝试在html文件上添加无缓存控件。 我尝试了所有发现的内容,但似乎没有任何效果。 这是我目前的配置文件 我的问题是我是怎么做的,是因为nginx还是因为其他原因? ...

3 不考虑配置的默认语言环境?

我配置了默认语言环境,并设置了text.properties + text_de.properties。 现在,如果我使用德语区域设置访问该网站,则文本取自text_de! 即使未将其配置为受支持的语言! jsf想要的吗? ...

4 返回的记录数,不考虑Limit cakePHP 3

我希望当前查询的数据库中没有可用的记录数,但不考虑LIMIT。 考虑一下,上述查询没有50条记录。 因此,只希望当前查询没有可用的记录数。 由于限制,我不能使用'count()',它总是会返回总数不超过5的可用记录总数。cakePHP中是否有解决方案? ...

7 Count不考虑新插入的记录

插入第一条记录后,即使在插入之后,计数仍显示为0。 我可以看到在执行SaveContext()后立即插入的记录。 因此,看起来userChangeRequestApprovalRepository没有用新插入的数据刷新。 像下面的语句那样计数+1是否合适 代码 插入方法 SaveCon ...

2019-11-06 10:07:46 0 67   c#/ linq
10 齐柏林飞艇090中不考虑口译员配置

在更新到090版本的齐柏林飞艇时,我注意到在创建新段落或运行段落时未考虑解释器配置。 似乎唯一加载的配置是默认配置,其余配置在前端被视为纯文本。 后端似乎可以很好地解析它们,但是现在我们缺少诸如语法高亮显示,代码完成以及在笔记本中编写代码时具有许多其他不错的功能的东西。 我知道090中有一些新属性 ...

暂无
暂无

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

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