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中的zip函数使用示例
Jan 29 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
python绘制热力图heatmap
Mar 23 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 Python
Python目录和文件处理总结详解
Sep 02 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
详解python中各种文件打开模式
Jan 19 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 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
php入门之连接mysql数据库的一个类
2012/04/21 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
python3 cvs将数据读取为字典的方法
2018/12/22 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
Python中的全局变量如何理解
2020/06/04 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
Farah官方网站:男士服装及配件
2019/11/01 全球购物
四年级数学教学反思
2014/02/02 职场文书
统计系教授推荐信
2014/02/28 职场文书
学校节水倡议书
2015/04/29 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
Java基础——Map集合
2022/04/01 Java/Android