【问题标题】:How to avoid default event logging in Python如何避免 Python 中的默认事件日志记录
【发布时间】:2019-10-01 06:08:35
【问题描述】:

我开始在 python 中使用日志记录,我想将我的日志写入文件。

日志模块正在向文件写入大量事件。我只想编写自己的记录器,不想记录默认记录器。我怎样才能避免这种情况?

以下是目前正在发生的示例日志记录:

将事件名称从 created-client-class.iot-data 更改为 created-client-class.iot-data-plane
将事件名称从 before-call.apigateway 更改为 before-call.api-gateway
从 request-created.machinelearning 更改事件名称。 预测到 request-created.machine-learning。 预测将区域的配置变量设置为“us-west-2”

我实例化记录器的方式

logger = logging.getLogger("S3_transfer")

def set_log_output_file(logname):
    if not os.path.exists('logs'):
        os.makedirs('logs')
    logging.basicConfig(filename='logs/{}.log'.format(logname),
                        filemode='a',
                        format='%(asctime)s %(levelname)-8s %(message)s',
                        datefmt='%a, %d %b %Y %H:%M:%S',
                        level=logging.DEBUG)

def get_logger():
    """
    Retrieves the current logger
    :return: Logger
    """
    return logger

请给点建议?!?!

【问题讨论】:

  • 感谢您的编辑,我不想把项目符号放在那里给我的记录器。让那些只是日志消息,而不是带有要点的亮点
  • 实际上,logging.INFO 级别避免了将默认事件写入日志。我错误地认为 DEBUG 出现在 INFO 之后。但是刚刚确认了这个层次DEBUG

标签: python python-logging


【解决方案1】:

发生这种情况是因为多次调用同名的 logging.getLogger() 将始终返回相同的 Logger 实例。 python包中有一种做法是通过logging.getLogger(__name__)创建一个logger实例,这样我们就可以在一个地方获取所有日志并配置一次logger。但是,如果您不想看到来自外部包的任何日志,只需将文件中的 __name__ 替换为您自己的记录器名称,并设置将写入文件的基本配置。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-09-09
  • 2022-10-23
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
相关资源
最近更新 更多