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. git系列之---将本地的项目添加到码云仓库

    1.前情: 本地写的 Demo 传到码云上面进行维护. 2.操作步骤: git init   将本地文件初始化为git 仓库,文件件会多一个 .git 文件夹[版本库]: git add .   或者 ...

  2. 发布到IIS的php网站,所有的页面打开都是空白,目录权限问题,已解决

    查了下,html可以打开,百度下原因,是网站目录没有写权限所致,修改下权限正常显示

  3. MySQL基础(7) | 触发器

    MySQL基础(7) | 触发器 基本语法 创建 CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EA ...

  4. springboot专用的注解

    这些是springboot特有的,常见的条件依赖注解有: @ConditionalOnBean,仅在当前上下文中存在某个bean时,才会实例化这个Bean. @ConditionalOnClass,某 ...

  5. python变量加逗号,的含义

    逗号,用于生成一个长度为1的元组 >>> (1) 1 >>> (1,) (1,) >>> 1, (1,) 因此需要将长度为1的元组中元素提取出来可 ...

  6. python-flask模块注入(SSTI)

    前言: 第一次遇到python模块注入是做ctf的时候,当时并没有搞懂原理所在,看了网上的资料,这里做一个笔记. flask基础: 先看一段python代码: from flask import fl ...

  7. mybatis中用到的9种设计模式

    1.Builder模式:例如SqlSessionFactoryBuilder.XMLConfigBuilder.XMLMapperBuilder.XMLStatementBuilder.CacheBu ...

  8. 吴裕雄--天生自然 python开发学习笔记:解决No module named 'mpl_toolkits.basemap'问题

    . 下载: basemap-1.1.0-cp36-cp36m-win_amd64.whl和pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl这两个文件 先运行: 再运行:

  9. 使用 Express 脚手架

    安装: npm install -g express-generator 创建项目: express myapp 安装依赖 install dependencies: > npm install ...

  10. C#设计模式学习笔记:简单工厂模式(工厂方法模式前奏篇)

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7551373.html,记录一下学习过程以备后续查用. 一.引言 简单工厂模式并不属于GoF23里面的设计模式 ...