1.关键字:

  login 登录
  log 日志
  logging python日志模块

2.什么叫日志:

日志用来记录用户行为或者代码的执行过程

3.日志使用的地方:
  1.排错的时候需要打印很多细节来帮助排错
  2.有一些用户行为,有没有错都要记录下来(后台)
  3.严重的错误记录下来

4.logging模块的日志级别,总开关小于分开发以总开关为准,总开关大于分开关以分开关为准。

两种书写格式:

格式一:

格式二:

日志输出

上面列表中的日志等级是从上到下依次升高的,即:DEBUG < INFO < WARNING < ERROR < CRITICAL,而日志的信息量是依次减少的;

问题:

问题1:为什么前面两条日志没有被打印出来?

  这是因为logging模块提供的日志记录函数所使用的日志器设置的日志级别是WARNING,因此只有WARNING级别的日志记录以及大于它的ERROR和CRITICAL级别的日志记录被输出了,而小于它的DEBUG和INFO级别的日志记录被丢弃了。

问题2:默认打印出来的日志信息中各字段表示什么意思?为什么会这样输出?

 上面输出结果中每行日志记录的各个字段含义分别是:日志级别:日志器名称:日志内容

问题3:怎么修改logging这些默认设置呢?

  其实很简单,在我们调用上面这些日志记录函数之前,手动调用一下basicConfig()方法,把我们想设置的内容以参数的形式传递进去就可以了。

5. logging.basicConfig()函数

该方法用于为logging日志系统做一些基本配置语法:logging.basicConfig(**kwargs)

实例2:

第一个例子,默认级别为warning
第二个例子,设置日志级别
第三个例子,输出日志格式化
第四个例子,输出到文件

有了filename参数就不会直接输出到控制台,而是写入文件,如下图

第五个例子,输出到文件(二)

第六个例子,写入到文件,同时将错误信息输出到控制台

logging模块讲解

 import logging
import time
import os class LoggingMethod():
# 创建方法
def getlogger(self):
logger = logging.getLogger()
logger.setLevel(logging.INFO)# Log等级总开关 now=time.strftime('%Y-%m-%d_%H_%M_%S')
filename=os.path.dirname(os.path.abspath('.')) + '\\log\\' + now + '.log'
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler(filename)#mode='a'默认以追加的形式写入文件,如果想清空重写用“mode='w'”
fh.setLevel(logging.INFO) # 输出到file的log等级的开关 # 定义handler的输出格式
formatter = logging.Formatter("%(asctime)s - %(name)s-%(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s") fh.setFormatter(formatter)
# 将FileHandler对象添加到handler里面
logger.addHandler(fh) return logger if __name__=='__main__':
logger=LoggingMethod().getlogger() # 日志
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')

LoggingMethod

设置log路径

 import logging
import time
import os # 同一天的所有日志输入到同一个log文件
class LoggingMethod():
def getlogger(self):
# 设置存储日志的文件名
now = time.strftime('%Y-%m-%d')
filename = os.path.dirname(os.path.abspath('.')) + '\\log\\' + now + '.log'
err_filename=os.path.dirname(os.path.abspath('.')) + '\\log\\' + now+'-error' + '-' + '.log'
# 第一步,创建一个logger
logger = logging.getLogger()#实例化logger对象
logger.setLevel(logging.DEBUG) # Log等级总开关
# 第二步,创建一个handler,用于写入所有日志
fh1 = logging.FileHandler(filename,encoding='utf-8')
fh1.setLevel(logging.DEBUG) # 输出到file的log等级的开关
# 创建一个handler,用于写入错误日志
fh2 = logging.FileHandler(err_filename,encoding='utf-8')
fh2.setLevel(logging.WARNING) # 输出到file的log等级的开关
# 第三步,定义handler的输出格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s -%(pathname)s-%(lineno)d'+'行'+'- %(message)s')
fh1.setFormatter(formatter)
fh2.setFormatter(formatter)
# 第四步,将handlers 添加到 logger
logger.addHandler(fh1)
logger.addHandler(fh2) return logger
if __name__=='__main__':
logger = LoggingMethod().getlogger()
logger.info('测试info日志')
logger.error('error')

日志输入到文件和控制台

Selenium3+python自动化012+日志logging基本用法、高级用法的更多相关文章

  1. Python中第三方库Requests库的高级用法详解

    Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代, ...

  2. python 自动化之路 logging日志模块

    logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方http://blog.csdn.net/zyz511 ...

  3. selenium3+python自动化50-环境搭建(firefox)

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  4. selenium3+python自动化50-环境搭建(firefox)【转载】

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  5. python之打印日志logging

    import logging # 简单打印日志举例 logging.basicConfig(level=logging.DEBUG) # 设置日志级别,WARN logging.warning('Wa ...

  6. Python彩蛋、字典、列表高级用法、元类、混入、迭代器、生成器、生成式、git

    一.类与类的关系 关注公众号"轻松学编程"了解更多. is-a 继承 继承是指一个类(称为子类.子接口)继承另外一个类(称为父类.父接口)的功能, 并可以增加它自己的新功能的能力. ...

  7. Python进阶:切片的误区与高级用法

    2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇.合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动.原系列的单篇就不删除了,毕竟也是 ...

  8. Python爬虫入门之Urllib库的高级用法

    1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...

  9. python+Appium自动化:日志logging模块

    日志级别 debug.info.warn.error.critical五个级别 logging模块构成(四部分) logger(记录器,用于日志采集) Handler(处理器,将日志记录发送到合适的路 ...

随机推荐

  1. 大白话工厂方法模式(Factory Method)

    目录 简单工厂模式缺陷 简单工厂模式改造 工厂方法模式定义 工厂方法模式结构 工厂方法模式分析 参考文献 简单工厂模式缺陷 大白话简单工厂模式(Simple Factory Pattern)中通过买车 ...

  2. DEM转换为gltf

    目录 1. 概述 2. 详细 3. 结果 4. 参考 1. 概述 DEM(地形文件)天然自带三维信息,可以将其转换成gltf模型文件.DEM是栅格数据,可以通过GDAL进行读取:gltf是一种JSON ...

  3. 【Java】模拟登录教务网并获取数据

    本文章仅做技术交流演示学习,请勿用于违法操作! 前期准备 首先我们需要到要模拟登录的网页,进行抓包操作. 使用Chrome浏览器打开系统的登录页面,按F12打开开发者工具 切换到Network选项卡 ...

  4. 【python数据挖掘】批量爬取站长之家的图片

    概述: 站长之家的图片爬取 使用BeautifulSoup解析html 通过浏览器的形式来爬取,爬取成功后以二进制保存,保存的时候根据每一页按页存放每一页的图片 第一页:http://sc.china ...

  5. [.NET][C#] C#中的时间戳

    Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年1月1日0时0分0秒( ...

  6. NODEJS 搭建本地文件服务器

    npm install anywhere --g 然后再任意目录位置运行 anywhere 80 就可以开启服务器.

  7. 各大原厂看好MRAM发展

    MRAM是一种以电阻为存储方式结合非易失性及随机访问两种特性,可以兼做内存和硬盘的新型存储介质.写入速度可达NAND闪存的数千倍,此外,其制作工艺要求低,良品率高,可以很好的控制成本.在寿命方面,由于 ...

  8. Jenkins+robotframework持续集成环境(二)

    配置Jenkins上的robotframework环境 一.添加robot插件 需要导一个robot framework 的包,导包方式如下: 1.进入插件管理页面,选择“可选插件”,在右侧搜索栏搜索 ...

  9. comTest.json文件中内容,被NewsList.vue文件引入

    本文目标:就是把扩散名为.json文件中数据,传递给NewsList.vue文件.主要通过导出,并传递给data(){}变紧 新建文件名为:commTest.json { "schoolNa ...

  10. 深入理解 C/C++ sizeof() 运算符

    过去有一段时间一直以为带个括号的 \(sizeof()\) 是 \(C/C++\) 的原生函数QAQ. 其实不然,\(sizeof\) 同位运算符(^|&~!)一样是一种单目运算符,作用于变量 ...