Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 保存日志调试并仅显示日志信息_Python_Logging - Fatal编程技术网

Python 保存日志调试并仅显示日志信息

Python 保存日志调试并仅显示日志信息,python,logging,Python,Logging,我想将所有日志行保存在superwrapper.log中,但只在控制台中显示信息。 如果我删除文件名行的#,则文件正常,但在控制台中看不到任何内容 if __name__ == '__main__': logging.basicConfig( #filename='superwrapper.log', level=logging.DEBUG, format='%(asctime)s.%(msecs)03d %(levelname)s %(

我想将所有日志行保存在superwrapper.log中,但只在控制台中显示信息。 如果我删除文件名行的
#
,则文件正常,但在控制台中看不到任何内容

if __name__ == '__main__':

    logging.basicConfig(
        #filename='superwrapper.log',
        level=logging.DEBUG,
        format='%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )

2020-04-28 11:41:09.698 INFO common - handle_elasticsearch: Elastic connection detected
2020-04-28 11:41:09.699 INFO superwrapper - <module>: Cookies Loaded: |TRUE|
2020-04-28 11:41:09.715 DEBUG connectionpool - _new_conn: Starting new HTTPS connection (1): m.facebook.com:443
如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu':
logging.basicConfig(
#filename='superwrapper.log',
级别=logging.DEBUG,
格式='(asctime)s.%(毫秒)03d%(levelname)s%(模块)s-%(funcName)s:%(消息)s',
datefmt=“%Y-%m-%d%H:%m:%S”
)
2020-04-28 11:41:09.698信息公用-手柄弹性搜索:检测到弹性连接
2020-04-28 11:41:09.699信息超级包装器-:加载的Cookies:|正确|
2020-04-28 11:41:09.715调试连接池-新连接:启动新的HTTPS连接(1):m.facebook.com:443

您可以设置多个记录器。这将消除调试消息,但请注意,更高严重性的消息仍将被广播(例如“警告”和“错误”)

这一场景在Python文档的下面部分:

import logging

# set up logging to file - see previous section for more details
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)
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
# tell the handler to use this format
console.setFormatter(formatter)
# add the handler to the root logger
logging.getLogger('').addHandler(console)

# Now, we can log to the root logger, or any other logger. First the root...
logging.info('Jackdaws love my big sphinx of quartz.')

# Now, define a couple of other loggers which might represent areas in your
# application:

logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2')

logger1.debug('Quick zephyrs blow, vexing daft Jim.')
logger1.info('How quickly daft jumping zebras vex.')
logger2.warning('Jail zesty vixen who grabbed pay from quack.')
logger2.error('The five boxing wizards jump quickly.')


在烹饪书给出的示例中,您应该在控制台中看到所有“信息”、“警告”和“错误”消息,但只有日志文件将包含“调试”消息。

您可以使用多个处理程序。可以接受
处理程序
作为Python 3.3中开始的参数。一个用于记录到日志文件,另一个用于记录到控制台。您还可以将处理程序设置为具有不同的日志记录级别。我能想到的最简单的方法是:

import logging
import sys

file_handler = logging.FileHandler('superwrapper.log')
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(logging.INFO)

logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
    handlers=[
        file_handler,
        console_handler
    ]
)
需要注意的一点是
StreamHandler
写入strerr。通常,您会希望用
sys.stdout