Ⅰ python如何用print打印出列表
直接使用print函数就可以了,举个例子:
L=['apple','fruit']#定义一个列表
print(L)#输出一个列表
输出结果就是['apple','fruit']。
不带输出项的print即为输出一个空行,如果之前的print语句输出项的最后用了诸如“,”或“;”,则表示其输出是在同一行上。其后面的空的print语句用来消除前面的print语句一直在同一行上输出的效果,使其后面的输出是在下一行。
Ⅱ python中使用logging模块在控制台打印日志的同时也打印log文件,但发现控制台的信息会出现重复打印
loggin模块需要进行很多封装才好用,你这种情况应该是初始化有问题,给你贴一段代码你自己照抄下来用用试试。
#-*-coding:UTF8-*-
#
importos
importlogging
classLogger(object):
'''
@summary:日志处理对象,对logging的封装
'''
def__init__(self,name='Logger'):
self.logger=logging.getLogger(name)
self.init_logger()
definit_logger(self):
self.logger.setLevel(logging.DEBUG)
#屏幕输出日志
stream=logging.StreamHandler()
stream.setLevel(logging.INFO)
#日志样式
fm_stream=logging.Formatter("[ 33[1;%(colorcode)sm%(levelname)s 33[0m%(asctime)s%(myfn)s:%(mylno)d:%(myfunc)s%(mymole)s]%(message)s","%m-%d%H:%M:%S")
stream.setFormatter(fm_stream)
self.logger.addHandler(stream)
defupdate_kwargs(self,kwargs,colorcode):
try:
fn,lno,func=self.logger.findCaller()
fn=os.path.basename(fn)
exceptExceptionasddd:
fn,lno,func="(unknownfile)",0,"(unknownfunction)"
ifnot"extra"inkwargs:
kwargs["extra"]={}
kwargs["extra"]["myfn"]=fn
kwargs["extra"]["mylno"]=lno
kwargs["extra"]["myfunc"]=func
kwargs["extra"]["colorcode"]=colorcode
kwargs["extra"]["mymole"]=""
defdebug(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"0")#原色
self.logger.debug(msg,*args,**kwargs)
definfo(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"32")#绿色
self.logger.info(msg,*args,**kwargs)
defwarning(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"33")#黄色
self.logger.warning(msg,*args,**kwargs)
deferror(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"31")#红色
self.logger.error(msg,*args,**kwargs)
defcritical(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"31")#红色
self.logger.critical(msg,*args,**kwargs)
使用方法:
fromloggerimportLogger
Logger().info('xxxxx')
Logger().warning('xxxxx')
Logger().error('xxxxx')
Ⅲ python logging日志打印疑问
用法错误了,正确的用法是
import logging
logger = logging.getLogger( )
handler = logging.FileHandler( 'log.log' )
handler.setFormatter( logging.Formatter( '%(asctime)s %(levelname)s %(message)s' ) )
logger.addHandler( handler )
logger.setLevel( logging.DEBUG )
if __name__ == '__main__':
for data in [ '1' ,'2' ,'3' ]:
logger.debug( data )
你上面的输出并不是logging的输出,而是显式调用writeLog的输出,而且每调用一次writeLog,就在writeLog里调用一次addHandler增加一个handle,那么下次调用时又会多调用一次,这就是为什么1输出了一次,2输出了两次.......
Ⅳ 我如何着色Python日志输出
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。控制字符颜色的转义序列是以ESC开头,即用\033来完成 !
Ⅳ 后台Python运行打印出的日志信息怎样显示到前端的flask页面
客户的数据查看主要看flask.request这个变量,数据大概存在request.data中, 可以这样实现。
from flask import Flask, request, current_app
app = Flask(__name__)
@app.route('/getUserList', methods=['GET', 'POST'])
def getUserList():
current_app.getUserList_data = request.data
return 'ok'
@app.route('/getUserList_debug', methods=['GET', 'POST'])
def getUserList_debug():
return current_app.getUserList_data
if __name__ == '__main__':
app.run(debug=True)
Ⅵ python打印日志,extra是什么意思
extra是用户自定义的dict. 这些key/value在格式化的时候可以直接引用。
extra可以用来传递额外的日志信息,尤其是上下文信息。
例如:
FORMAT='%(asctime)-15s%(clientip)s%(user)-8s%(message)s'
logging.basicConfig(format=FORMAT)
d={'clientip':'192.168.0.1','user':'fbloggs'}
logger=logging.getLogger('tcpserver')
logger.warning('Protocolproblem:%s','connectionreset',extra=d)
这里除了protocol错误描述外,还附加了客户IP和用户名信息。
如果配置了一些非文本格式的handler,结构化的数据会更容易存储和查询。
例如,Sentry的logging handler允许用户用extra.data来传递任意信息,并自动记录到web界面。
logger.error('Therewassomecrazyerror',exc_info=True,extra={
'culprit':'my.view.name',
'fingerprint':[...],
'data':{
#
'username':request.user.username,
}
})
Ⅶ python打印日志(logging)字典是单引号,转json时不识别单引号,怎么能打印出来时双引号
如果只是单纯想把字典loads到json中,可以用repr+replace转换一下。
Ⅷ python 让Log既打印在屏幕上,又在文件里保存一份
两条语句不就成了。
一条print打印到屏幕
再一条标准输出到文件
Ⅸ python写日志需要输出什么信息
记录某个时间点发生了什么事情,错误信息、警告信息、提示信息、调试信息等