128

当我使用 记录事件时logging.info,它不会出现在 Python 终端中。

import logging
logging.info('I am info')  # no output

相反,记录的事件logging.warn确实出现在终端中。

import logging
logging.warn('I am warning')  # outputs "I am warning"

我可以更改环境级别以logging.info打印到控制台吗?我想避免在每个 Python 文件中进行更改。

4

6 回答 6

193

根记录器始终默认为警告级别。试着打电话

logging.getLogger().setLevel(logging.INFO)

你应该没事。

于 2012-07-18T19:19:29.303 回答
45

就像@ztyx 所说的默认记录器级别是警告。您必须将其设置为较低的级别

您可以通过使用logging.basicConfig和设置记录器级别来做到这一点:

logging.basicConfig(level=logging.DEBUG)
于 2018-10-11T13:43:00.200 回答
23

上述解决方案对我不起作用,但这里的代码确实:

# set up logging to file
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                    datefmt='%m-%d %H:%M',
                    filename='/temp/myapp.log',
                    filemode='w')
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# add the handler to the root logger
logging.getLogger('').addHandler(console)

(为了可读性,我省略了部分代码)

于 2018-11-27T09:17:55.143 回答
6

这将起作用

import logging

logging.basicConfig()
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

logger.info('its working')
于 2021-06-18T05:51:44.883 回答
0

对于那些使用absl.logging,等效的命令是

from absl import logging
logging.set_verbosity(logging.INFO)
于 2021-10-12T21:58:02.220 回答
0

工作模块级记录器所需的最低代码是多少?我做了一个实验(使用python 3.8.6版)。

要点是:

  • logging.basicConfig()需要(但是,level=...不需要指定)
  • 必要配置根记录器:logging.getLogger().setLevel(...)

因此,一个最小的工作示例是:

# in library/module code
import logging
lg = logging.getLogger('x.y.z')

# in application code
logging.basicConfig()
logging.getLogger().setLevel(logging.INFO)  # configure root logger
lg.info("hi")  # this should print now

这是实验:

In [1]: import logging

In [2]: lg = logging.getLogger('x.y.z')

In [3]: lg.info(1)

In [4]: logging.basicConfig()

In [5]: lg.info(1)

In [6]: logging.basicConfig(level=logging.INFO)

In [7]: lg.info(1)

In [8]: logging.basicConfig()

In [9]: logging.getLogger().setLevel(logging.INFO)

In [10]: lg.info(1)
INFO:x.y.z:1
于 2021-12-12T07:01:56.480 回答