Python 实现日志同时输出到屏幕和文件


Posted in Python onFebruary 19, 2020

1. 日志输出到屏幕

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import logging

logging.basicConfig(level=logging.NOTSET, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

logging.debug('This is a debug message.')
logging.info('This is an info message.')
logging.warning('This is a warning message.')
logging.error('This is an error message.')
logging.critical('This is a critical message.')

默认的 level 是 logging.WARNING,低于这个级别的就不输出了。如果需要显示低于 logging.WARNING 级别的内容,可以引入 logging.NOTSET 级别来显示。

DEBUG - 打印全部的日志。详细的信息,通常只出现在诊断问题上。

INFO - 打印 INFO、WARNING、ERROR、CRITICAL 级别的日志。确认一切按预期运行。

WARNING - 打印 WARNING、ERROR、CRITICAL 级别的日志。表明一些问题在不久的将来,这个软件还能按预期工作。

ERROR - 打印 ERROR、CRITICAL 级别的日志。更严重的问题,软件没能执行一些功能。

CRITICAL : 打印 CRITICAL 级别。一个严重的错误,表明程序本身可能无法继续运行。

/usr/bin/python2.7 /home/strong/git_workspace/MonoGRNet/test.py
2019-06-26 16:00:45,990 - root - DEBUG - This is a debug message.
2019-06-26 16:00:45,990 - root - INFO - This is an info message.
2019-06-26 16:00:45,990 - root - WARNING - This is a warning message.
2019-06-26 16:00:45,990 - root - ERROR - This is an error message.
2019-06-26 16:00:45,990 - root - CRITICAL - This is a critical message.

Process finished with exit code 0

2. 日志输出到文件

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import logging
import os.path
import time

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

time_line = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))

print(os.getcwd())
log_path = os.path.dirname(os.getcwd()) + '/'
logfile = log_path + time_line + '.log'

handler = logging.FileHandler(logfile, mode='w')
handler.setLevel(logging.INFO)

formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
handler.setFormatter(formatter)

logger.addHandler(handler)

logger.debug('This is a debug message.')
logger.info('This is an info message.')
logger.warning('This is a warning message.')
logger.error('This is an error message.')
logger.critical('This is a critical message.')
/usr/bin/python2.7 /home/strong/git_workspace/MonoGRNet/test.py
/home/strong/git_workspace/MonoGRNet

Process finished with exit code 0

201906261627.log

2019-06-26 16:27:26,899 - test.py[line:30] - INFO: This is an info message.
2019-06-26 16:27:26,899 - test.py[line:31] - WARNING: This is a warning message.
2019-06-26 16:27:26,899 - test.py[line:32] - ERROR: This is an error message.
2019-06-26 16:27:26,899 - test.py[line:33] - CRITICAL: This is a critical message.

3. 日志同时输出到屏幕和文件

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import logging
import os.path
import time

logger = logging.getLogger(__name__)
logger.setLevel(level=logging.DEBUG)

time_line = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))

print(os.getcwd())
log_path = os.path.dirname(os.getcwd()) + '/'
logfile = log_path + time_line + '.log'

handler = logging.FileHandler(logfile, mode='w')
handler.setLevel(logging.INFO)

formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
handler.setFormatter(formatter)

console = logging.StreamHandler()
console.setLevel(logging.WARNING)

logger.addHandler(handler)
logger.addHandler(console)

logger.debug('This is a debug message.')
logger.info('This is an info message.')
logger.warning('This is a warning message.')
logger.error('This is an error message.')
logger.critical('This is a critical message.')
/usr/bin/python2.7 /home/strong/git_workspace/MonoGRNet/test.py
/home/strong/git_workspace/MonoGRNet
This is a warning message.
This is an error message.
This is a critical message.

Process finished with exit code 0

201906261636.log

2019-06-26 16:36:38,385 - test.py[line:34] - INFO: This is an info message.
2019-06-26 16:36:38,385 - test.py[line:35] - WARNING: This is a warning message.
2019-06-26 16:36:38,385 - test.py[line:36] - ERROR: This is an error message.
2019-06-26 16:36:38,385 - test.py[line:37] - CRITICAL: This is a critical message.

以上这篇Python 实现日志同时输出到屏幕和文件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python登录Gmail并发送Gmail邮件的教程
Apr 17 Python
在Django中使用Sitemap的方法讲解
Jul 22 Python
详解Python Socket网络编程
Jan 05 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
python 2.7.14安装图文教程
Apr 08 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
Python学习笔记之For循环用法详解
Aug 14 Python
python可视化实现KNN算法
Oct 16 Python
Python3直接爬取图片URL并保存示例
Dec 18 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
python 控制台单行刷新,多行刷新实例
Feb 19 #Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 #Python
python 解决tqdm模块不能单行显示的问题
Feb 19 #Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 #Python
Python换行与不换行的输出实例
Feb 19 #Python
Python print不能立即打印的解决方式
Feb 19 #Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 #Python
You might like
MySQL修改密码方法总结
2008/03/25 PHP
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
Python3标准库总结
2019/02/19 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
Python中base64与xml取值结合问题
2019/12/22 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
法国珠宝店:CLEOR
2017/01/29 全球购物
我爱我家教学反思
2014/05/01 职场文书
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
Python字符串常规操作小结
2022/04/03 Python