日志logging输出,屏幕显示,且记录到文件中

说明:

logging提供了一组便利的函数,用来做简单的日志。它们是 debug()、 info()、 warning()、 error() 和 critical()。

logging函数根据它们用来跟踪的事件的级别或严重程度来命名。标准级别及其适用性描述如下(以严重程度递增排序)

实际使用中可以设置等级来方便获取日志,eg:level=logging.DEBUG

输出到屏幕

logging库采取了模块化的设计,提供了许多组件:记录器、处理器、过滤器和格式化器。

  • Logger 暴露了应用程序代码能直接使用的接口。
  • Handler将(记录器产生的)日志记录发送至合适的目的地。
  • Filter提供了更好的粒度控制,它可以决定输出哪些日志记录。
  • Formatter 指明了最终输出中日志记录的布局。

常用的记录器对象的方法分为两类:配置和发送消息。

这些是最常用的配置方法:

Logger.setLevel()指定logger将会处理的最低的安全等级日志信息

Logger.addHandler()和Logger.removeHandler()从记录器对象中添加和删除处理程序对象。处理器详见Handlers

Logger.addFilter()和Logger.removeFilter()从记录器对象添加和删除过滤器对象。

logging.StreamHandler -> 控制台输出

配置方法:

  1. setLevel()方法和日志对象的一样,指明了将会分发日志的最低级别。为什么会有两个setLevel()方法?记录器的级别决定了消息是否要传递给处理器。每个处理器的级别决定了消息是否要分发。
  2. setFormatter()为该处理器选择一个格式化器。
  3. addFilter()removeFilter()分别配置和取消配置处理程序上的过滤器对象。
# 定义一个Handler打印INFO及以上级别的日志到sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
console.setFormatter(formatter)
formatter = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
# 将定义好的console日志handler添加到root logger
logging.getLogger('').addHandler(console)

输出到文件

利用logging.basicConfig()保存log到文件 

logger = logging.getLogger()
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s - %(lineno)d - %(levelname)s: %(message)s',
                    datefmt='%m-%d %H:%M',
                    filename='log.txt', #文件内容
                    filemode='w' #w覆盖写入,a继续写入)
try:
    2/0
except Exception as e:
    logger.error(logging.info(e), exc_info=True)

备注:

format中的那个变量是logging内置的keys,

asctime     %(asctime)s     日志产生的时间,

lineno     %(lineno)d     日志所针对的代码行号

levelname     %(levelname)s     日志级别 ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')

message     %(message)s     具体的日志信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值