Python 保存日志调试并仅显示日志信息
我想将所有日志行保存在superwrapper.log中,但只在控制台中显示信息。 如果我删除文件名行的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 %(
#
,则文件正常,但在控制台中看不到任何内容
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