python 通过logging写入日志到文件和控制台的实例


Posted in Python onApril 28, 2018

如下所示:

import logging 
 
# 创建一个logger 
logger = logging.getLogger('mylogger') 
logger.setLevel(logging.DEBUG) 
 
# 创建一个handler,用于写入日志文件 
fh = logging.FileHandler('test.log') 
fh.setLevel(logging.DEBUG) 
 
# 再创建一个handler,用于输出到控制台 
ch = logging.StreamHandler() 
ch.setLevel(logging.DEBUG) 
 
# 定义handler的输出格式 
formatter = logging.Formatter('[%(asctime)s][%(thread)d][%(filename)s][line: %(lineno)d][%(levelname)s] ## %(message)s')
fh.setFormatter(formatter) 
ch.setFormatter(formatter) 
 
# 给logger添加handler 
logger.addHandler(fh) 
logger.addHandler(ch) 
 
# 记录一条日志 
logger.info('foorbar')

关于formatter的配置,采用的是%(<dict key>)s的形式,就是字典的关键字替换。提供的关键字包括:

Format Description
%(name)s Name of the logger (logging channel).
%(levelno)s Numeric logging level for the message (DEBUG, INFO, WARNING, ERROR, CRITICAL).
%(levelname)s Text logging level for the message ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL').
%(pathname)s Full pathname of the source file where the logging call was issued (if available).
%(filename)s Filename portion of pathname.
%(module)s Module (name portion of filename).
%(funcName)s Name of function containing the logging call.
%(lineno)d Source line number where the logging call was issued (if available).
%(created)f Time when the LogRecord was created (as returned by time.time()).
%(relativeCreated)d Time in milliseconds when the LogRecord was created, relative to the time the logging module was loaded.
%(asctime)s Human-readable time when the LogRecord was created. By default this is of the form “2003-07-08 16:49:45,896” (the numbers after the comma are millisecond portion of the time).
%(msecs)d Millisecond portion of the time when the LogRecord was created.
%(thread)d Thread ID (if available).
%(threadName)s Thread name (if available).
%(process)d Process ID (if available).
%(message)s The logged message, computed as msg % args.

以上这篇python 通过logging写入日志到文件和控制台的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python lxml模块安装教程
Jun 02 Python
Python实现批量修改文件名实例
Jul 08 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
Pandas 按索引合并数据集的方法
Nov 15 Python
python2和python3在处理字符串上的区别详解
May 29 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
Python实现图片识别加翻译功能
Dec 26 Python
Python垃圾回收机制三种实现方法
Apr 27 Python
浅谈python出错时traceback的解读
Jul 15 Python
解决pytorch 数据类型报错的问题
Mar 03 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 #Python
用TensorFlow实现多类支持向量机的示例代码
Apr 28 #Python
详谈python在windows中的文件路径问题
Apr 28 #Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 #Python
对python中的logger模块全面讲解
Apr 28 #Python
详解PyTorch批训练及优化器比较
Apr 28 #Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 #Python
You might like
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
基于php 随机数的深入理解
2013/06/05 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
php微信公众号开发之简答题
2018/10/20 PHP
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
django实现分页的方法
2015/05/26 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
机器学习10大经典算法详解
2017/12/07 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
python如何通过twisted实现数据库异步插入
2018/03/20 Python
python机器人运动范围问题的解答
2019/04/29 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
毕业生实习鉴定
2013/12/11 职场文书
护士求职信范文
2014/05/24 职场文书
机械专业求职信范文
2014/07/15 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
房屋所有权证明
2014/10/20 职场文书
详解Java实践之适配器模式
2021/06/18 Java/Android
vue封装数字翻牌器
2022/04/20 Vue.js