自定义日志级别不适用于structlog

时间:2019-02-03 17:22:31

标签: python logging structlog

我正在使用python自定义日志-TRACE是以下代码中的自定义日志级别。

使用默认记录器,可以正常工作

但是当我将它更改为structlog时,它给出了错误。

structlog无法在下面的代码中识别TRACE。

似乎structlog不支持自定义日志级别?

已提及https://github.com/hynek/structlog/issues/47

的尝试解决方法

<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.6.0/fabric.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id='app'></div>

但是它不起作用

    structlog.stdlib.TRACE = TRACE = 5
    structlog.stdlib._NAME_TO_LEVEL['trace'] = TRACE

2 个答案:

答案 0 :(得分:0)

由于您可能从you commented on的相关问题中了解到,目前没有任何官方方法。

您应该能够通过猴子补丁structlog.stdlib._NAME_TO_LEVEL来绕开它。

答案 1 :(得分:0)

可以创建一个自定义级别,但不是很容易。

您需要记住,不仅要更改structlog.stdlib._NAME_TO_LEVEL,还要更改structlog.stdlib._LEVEL_TO_NAME

然后,您需要至少向trace添加一个structlog.stdlib._FixedFindCallerLogger方法(如果您向trace添加一个structlog.stdlib.BoundLogger方法,则可以调用{{1 }},这很好)。

此代码应该有效:

LOG.trace