python logging 默认输出到屏幕_【Python】logging 和print 混用,输出到屏幕为什么会乱序?...

函数说明logging.debug(msg,*args,**kwargs)创建一条严重级别为DEBUG的日志记录logging.info(msg,*args,**kwargs)创建一条严重级别为INFO的日志记录logging.warning(msg,*args,**kwargs)创建一条严重级别为WARNING的日志记录logging.error(msg,*args,**kwargs)创建一条严重级别为ERROR的日志记录logging.critical(msg,*args,**kwargs)创建一条严重级别为CRITICAL的日志记录logging.log(level,*args,**kwargs)创建一条严重级别为level的日志记录logging.basicConfig(**kwargs)对rootlogger进行一次性配置其中logging.basicConfig(**kwargs)函数用于指定“要记录的日志级别”、“日志格式”、“日志输出位置”、“日志文件的打开模式”等信息,其他几个都是用于记录各个级别日志的函数。默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL>ERROR>WARNING>INFO>DEBUG)#首先设置日志的名称,并指定日志的级别#指定记录日志的路径,并设置记录日志的级别#指定输出在cmd窗口的对象,并设置显示级别#设置记录日志和显示窗口日志的格式#将记录日志和显示窗口日志的格式分别加入相应的对象#开始打印日志#窗口显示日志与颜色的混用,配合ctypes使用,在linux中,不存在windll模块,c相关的不清楚,欢迎留言解决importlogging,ctypes

classLogger():

def__init__(self,path,clevel=logging.DEBUG,flevel=logging.DEBUG):

self.logger=logging.getLogger(path)

self.logger.setLevel(logging.DEBUG)

fmt=logging.Formatter('[%(asctime)s][%(levelname)s]%(message)s','%Y-%m-%d%H:%M:%S')

#设置cmd日志

sh=logging.StreamHandler()

sh.setFormatter(fmt)

sh.setLevel(clevel)

#设置文件日志

fh=logging.FileHandler(path)

fh.setFormatter(fmt)

fh.setLevel(flevel)

#将设置好的加入logger对象

self.logger.addHandler(sh)

self.logger.addHandler(fh)

#设置窗口显示的错误级别的颜色

self.show_white=0x0007

self.show_blue=0x01

self.show_green=0x02

self.show_red=0x04

self.show_yellow=self.show_red|self.show_green

self.std_output_handles=-11

self.std_output_handle=ctypes.windll.kernel32.GetStdHandle(self.std_output_handles)

defdebug(self,message):

self.logger.debug(message)

definfo(self,message):

self.logger.info(message)

defwar(self,message):

color=self.show_yellow

self.set_color(color)

self.logger.warning(message)

deferror(self,message):

color=self.show_red

self.set_color(color)

self.logger.error(message)

defcri(self,message):

self.logger.critical(message)

defset_color(self,color):

handle=self.std_output_handle

bool=ctypes.windll.kernel32.SetConsoleTextAttribute(handle,color)

returnbool

if__name__=='__main__':

logyyx=Logger('/root/python_test/logs/alllog.log',logging.ERROR,logging.DEBUG)

logyyx.debug('一个debug信息')

logyyx.info('一个info信息')

logyyx.war('一个warning信息')

logyyx.error('一个error信息')

logyyx.cri('一个致命的critical信息')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值