python- 日志学习
# @File : learn_logging.py #-*- coding:utf-8 -*- """
日志:log 记录代码执行的过程
一旦记录下来,就可以根据日志去定位排查问题 日志的级别(由低到高):debug < info < waring < error <critical
可自定义日志输出的级别,可灵活控制 logging库 是python自带的 """
import logging
# # root = RootLogger(WARNING) 是系统自定义的收集日志的收集器;
# # 默认收集并输入warning级别及其以上的日志信息
#
# # handles 是输出渠道,默认输出渠道是console控制台
# logging.debug('这是一个debug信息')
# logging.info('这是一个info信息')
# logging.warning('这是一个waring信息')
# logging.error('这是一个error信息')
# logging.critical('这是一个crtical信息') # 创建一个日志收集器并命名
my_logger=logging.getLogger('test_logger')
my_logger.setLevel('DEBUG')# 设置收集器的级别 # 设置输出格式
formatter = logging.Formatter('%(asctime)s - %(filename)s - %(name)s - %(levelname)s - 日志信息: %(message)s') # 指定输出渠道,输出到控制台
ch=logging.StreamHandler()#输入到控制台
ch.setLevel('DEBUG')# 设置输出渠道的级别;
# 如果收集器中的级别与输出渠道级别不同,取两者的交集
ch.setFormatter(formatter)#日志输出时,按指定的输出格式输出 #输出到本地文件
fh=logging.FileHandler('log_file.txt',encoding='utf-8')#输出到本地log_file文档中;日志中有中文,需要设置编码
fh.setLevel('ERROR')#输出级别为error
fh.setFormatter(formatter)#日志输出时,按指定的输出格式输出 #对接:收集器与输出渠道
my_logger.addHandler(ch)
my_logger.addHandler(fh) #日志信息
my_logger.debug('这是一个debug信息')
my_logger.info('这是一个info信息')
my_logger.warning('这是一个waring信息')
my_logger.error('这是一个error信息')
my_logger.critical('这是一个crtical信息')
编写一个属于自己的可控制的日志类
# @File : learn_logging.py #-*- coding:utf-8 -*- import logging class MyLog: def my_log(self,level,msg):
# 创建一个日志收集器并命名
my_logger=logging.getLogger('test_logger')
my_logger.setLevel('DEBUG')# 设置收集器的级别 # 设置输出格式
formatter = logging.Formatter('%(asctime)s - %(filename)s - %(name)s - %(levelname)s - 日志信息: %(message)s') # 指定输出渠道,输出到控制台
ch=logging.StreamHandler()#输入到控制台
ch.setLevel('DEBUG')# 设置输出渠道的级别;
# 如果收集器中的级别与输出渠道级别不同,取两者的交集
ch.setFormatter(formatter)#日志输出时,按指定的输出格式输出 #输出到本地文件
fh=logging.FileHandler('log_file.txt',encoding='utf-8')#输出到本地log_file文档中;日志中有中文,需要设置编码
fh.setLevel('DEBUG')#输出级别为debug
fh.setFormatter(formatter)#日志输出时,按指定的输出格式输出 #对接:收集器与输出渠道
my_logger.addHandler(ch)
my_logger.addHandler(fh) if level == 'DEBUG':
my_logger.debug(msg)
elif level == 'INFO':
my_logger.info(msg)
elif level == 'WARNING':
my_logger.warning(msg)
elif level == 'ERROR':
my_logger.error(msg)
elif level == 'CRITICAL':
my_logger.critical(msg) def debug1(self,msg):
self.my_log('DEBUG',msg)
def info1(self,msg):
self.my_log('INFO',msg)
def warning(self,msg):
self.my_log('WARNING',msg)
def error(self,msg):
self.my_log('ERROR',msg)
def crtical(self,msg):
self.my_log('CRTICAL',msg) if __name__ == '__main__':
my_logger=MyLog()
my_logger.debug1('haha')
my_logger.info1('heng')
python- 日志学习的更多相关文章
- python日志模块logging学习
介绍 Python本身带有logging模块,其默认支持直接输出到控制台(屏幕),或者通过配置输出到文件中.同时支持TCP.HTTP.GET/POST.SMTP.Socket等协议,将日志信息发送到网 ...
- python爬虫学习笔记(一)——环境配置(windows系统)
在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库) [推荐地址:清华镜像] https://mirrors ...
- 浅析python日志重复输出问题
浅析python日志重复输出问题 问题起源: 在学习了python的函数式编程后,又接触到了logging这样一个强大的日志模块.为了减少重复代码,应该不少同学和我一样便迫不及待的写了一个自己的日 ...
- Python 标准库一览(Python进阶学习)
转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...
- 【目录】Python模块学习系列
目录:Python模块学习笔记 1.Python模块学习 - Paramiko - 主机管理 2.Python模块学习 - Fileinput - 读取文件 3.Python模块学习 - Confi ...
- Node.js / Python 日志
一.Node.js 日志 1.原生 Node.js 原生方法其实很简单,就四个: // 输出到 stdout console.log() console.info() = console.log() ...
- Python新手学习raise用法
当程序出现错误时,系统会自动引发异常.除此之外,Python也允许程序自行引发异常,自行引发异常使用 raise 语句来完成. 很多时候,系统是否要引发异常,可能需要根据应用的业务需求来决定,如果程序 ...
- python日志按天分割,保存近一个月日志,日志自动清理
python日志按天分割,保存近一个月日志 import os import logging import re from logging.handlers import TimedRotatingF ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 60分钟Python快速学习(给发哥一个交代)
60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...
随机推荐
- ML平台_设计要点
如果说机器是人类手的延伸.交通工具是人类腿的延伸,那么人工智能就是人类大脑的延伸,甚至可以帮助人类自我进化,超越自我.人工智能也是计算机领域最前沿和最具神秘色彩的学科,科学家希望制造出代替人类思考的智 ...
- web前端性能调优(一)
最近2个月一直在做手机端和电视端开发,开发的过程遇到过各种坑.弄到快元旦了,终于把上线了.2个月干下来满满的的辛苦,没有那么忙了自己准备把前端的性能调优总结以下,以方便以后自己再次使用到的时候得于得心 ...
- Hiero中的Events机制
The hiero.core.events module allows you to register method callbacks to respond to events sent by Hi ...
- Docker安装 和简单使用
1.安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 2.这一步设置即将安装的是稳定版仓库 yum-config-man ...
- 使用C#调用PI-SDK进行基于PI的开发
一.概述 PI-SDK(Plant Information Software Develop Kit)是OSI公司提供的基于面向对象的访问PI数据库的软件开发工具包,它可以对以下数据库进行读写: ² ...
- webGL之three.js入门1
开场白 最近开始学前端,看了极客学院的前端教学视频,其实有C++或者java基础的人学前端还是很快的.但是html的标签和CSS的样式还是得多code才能熟练,熟能生巧,学以致用. 还在看js,因为有 ...
- Azure ARM (15) 根据现有VHD文件,创建ARM VM
<Windows Azure Platform 系列文章目录> 在很多时候,我们需要根据现有VHD文件,创建ARM VM.在这里笔者简单介绍一下相关的Azure PowerShell 这里 ...
- JS和AS交互
这个话题在网上应该说很好找,有很多这方面的资料.比者也看过一些,不过大部分都是AS2与JS进行交互.很少提到AS3,即使有,也让人感觉浅尝辄止.很多东西并没有介绍的太清楚.所有笔者萌生了写这样一篇教程 ...
- js 取一个对象的长度,取出来的是undefined,自己写的一个计算长度的函数解决了。
收藏 牙膏儿 发表于 3年前 阅读 13085 收藏 7 点赞 1 评论 1 [粉丝福利]-<web 前端基础到实战系列课程>免费在线直播教学>>> 昨晚写一段代码, ...
- [ZZ]39条更好的软件开发方法
1.重构是程序员的主力技能. 2.工作日志能提升脑容量. 3.先用profiler调查,才有脸谈优化. 4.注释贵精不贵多.杜绝大姨妈般的“例注”.漫山遍野的碎碎念注释,实际就是背景噪音. 5.普通程 ...