记录Python脚本的运行日志的方法


Posted in Python onJune 05, 2019

一、logging模块

Python中有一个模块logging,可以直接记录日志

#  日志级别
# CRITICAL 50
# ERROR  40
# WARNING 30
# INFO   20
# DEBUG  10

logging.basicConfig()函数中的具体参数:

filename:   指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中;
filemode:   文件打开方式,在指定了filename时使用这个参数,默认值为“w”还可指定为“a”;
format:      指定handler使用的日志显示格式;
datefmt:    指定日期时间格式。,格式参考strftime时间格式化(下文)
level:        设置rootlogger的日志级别
stream:     用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。
                  若同时列出了filename和stream两个参数,则stream参数会被忽略。

 format参数中可能用到的格式化信息:

%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s 用户输出的消息

二、logging模块测试

1、打印日志到标准输出中

import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')

输出结果

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe D:/pyworkpeace/tupian.py 'https://www.tianyancha.com/login'
WARNING:root:warning message

Process finished with exit code 0

可以看出默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志。默认的日志的格式为:

日志级别:Logger名称:用户输出消息

2、将日志文件输入到文件中

import os
logging.basicConfig(filename=os.path.join(os.getcwd(),'log.txt'),level=logging.DEBUG)
logging.debug('this is a message')

运行这三行代码后会在安装Python的目录中出现一个log.txt文件,文件内容

DEBUG:root:this is a message
DEBUG:root:debug message

3、自定义格式,输出日志文件

# -*-coding:utf-8-*-

import logging


def console_out(logFilename):
  ''''' Output log to file and console '''
  # Define a Handler and set a format which output to file
  logging.basicConfig(
    level=logging.DEBUG, # 定义输出到文件的log级别,大于此级别的都被输出
    format='%(asctime)s %(filename)s : %(levelname)s %(message)s', # 定义输出log的格式
    datefmt='%Y-%m-%d %A %H:%M:%S', # 时间
    filename=logFilename, # log文件名
    filemode='w') # 写入模式“w”或“a”
  # Define a Handler and set a format which output to console
  console = logging.StreamHandler() # 定义console handler
  console.setLevel(logging.INFO) # 定义该handler级别
  formatter = logging.Formatter('%(asctime)s %(filename)s : %(levelname)s %(message)s') # 定义该handler格式
  console.setFormatter(formatter)
  # Create an instance
  logging.getLogger().addHandler(console) # 实例化添加handler

  # Print information       # 输出日志级别
  logging.debug('logger debug message')
  logging.info('logger info message')
  logging.warning('logger warning message')
  logging.error('logger error message')
  logging.critical('logger critical message')


if __name__ == "__main__":
  console_out('logging.log')

输出结果:

此时也会自动生成一个日志文件,日志文件和运行文件在同一个文件夹中,文件名logging.log

2017-10-23 Monday 11:37:59 hgghf : DEBUG logger debug message
2017-10-23 Monday 11:37:59 hgghf : INFO logger info message
2017-10-23 Monday 11:37:59 hgghf : WARNING logger warning message
2017-10-23 Monday 11:37:59 hgghf : ERROR logger error message
2017-10-23 Monday 11:37:59 hgghf : CRITICAL logger critical message

修改输出路径:

filename='/tmp/test1.log', # log文件名

当将脚本中这行代码换一下,那么我们输出日志的路径地址就换成了D:\tmp

下面的方式同样可以达到上述结果

 4、自定义输出位置

import logging 
logging.basicConfig(level=logging.DEBUG, 
          format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', 
          datefmt='%a, %d %b %Y %H:%M:%S', 
          filename='/tmp/test.log', 
          filemode='w') 
 
logging.debug('debug message') 
logging.info('info message') 
logging.warning('warning message') 
logging.error('error message') 
logging.critical('critical message')

由于运行脚本放在D:\pyworkpeace\下,输出文件在D盘tmp文件夹下test.log,内容如下:

Mon, 23 Oct 2017 15:00:05 tupian.py[line:11] DEBUG debug message
Mon, 23 Oct 2017 15:00:05 tupian.py[line:12] INFO info message
Mon, 23 Oct 2017 15:00:05 tupian.py[line:13] WARNING warning message
Mon, 23 Oct 2017 15:00:05 tupian.py[line:14] ERROR error message
Mon, 23 Oct 2017 15:00:05 tupian.py[line:15] CRITICAL critical message

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现同时给多个变量赋值的方法
Apr 30 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
Windows下PyCharm安装图文教程
Aug 27 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
Python生成器实现简单"生产者消费者"模型代码实例
Mar 27 Python
Python json转字典字符方法实例解析
Apr 13 Python
tensorflow常用函数API介绍
Apr 19 Python
Python requests上传文件实现步骤
Sep 15 Python
Python基于locals返回作用域字典
Oct 17 Python
python中的split、rsplit、splitlines用法说明
Oct 23 Python
Python基于unittest实现测试用例执行
Nov 25 Python
python实现socket简单通信的示例代码
Apr 13 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 #Python
分享8个非常流行的 Python 可视化工具包
Jun 05 #Python
Django组件cookie与session的具体使用
Jun 05 #Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 #Python
python3下载抖音视频的完整代码
Jun 05 #Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 #Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 #Python
You might like
腾讯微博提示missing parameter errorcode 102 错误的解决方法
2014/12/22 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
JS模拟多线程
2007/02/07 Javascript
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
vue实现购物车的监听
2020/04/20 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
WxPython建立批量录入框窗口
2019/02/27 Python
Python简易版停车管理系统
2019/08/12 Python
详解pandas获取Dataframe元素值的几种方法
2020/06/14 Python
Python 合并拼接字符串的方法
2020/07/28 Python
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
Weblogic和WebSphere不同特点
2012/05/09 面试题
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
个人收入证明格式
2015/06/24 职场文书
安全生产学习心得体会
2016/01/18 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
德生2P3收音机开箱评测
2022/04/30 无线电
MySQL深分页问题解决思路
2022/12/24 MySQL