python logger
时间:2020-05-25
本文章向大家介绍python logger,主要包括python logger使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
import os
import logging
from logging.handlers import TimedRotatingFileHandler
from logging import handlers
import socket
def logger(path, loggername=None):
os.makedirs(path, exist_ok=True)
if loggername is None:
loggername = ''
logger = logging.getLogger(loggername)
logger.setLevel(logging.INFO)
handler = TimedRotatingFileHandler(path,
when="midnight", # midnight
interval=1,
backupCount=30)
logFormatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
handler.setFormatter(logFormatter)
logger.addHandler(handler)
return logger
def critical_email_logger():
HOST = 'Host.com'
FROM = 'email0@Host.com'
TO = 'email1@Host.com,email2@Host.com'
CREDENTIALS = ('email0@Host.com','email0passwd')
SUBJECT = 'Critical Event From [Project Name]'
# Setup logging
logging.basicConfig(level=logging.INFO)
handler = handlers.SMTPHandler(HOST, FROM, TO, SUBJECT,CREDENTIALS)
email_logger = logging.getLogger('Critical email log')
email_logger.addHandler(handler)
email_logger.setLevel = logging.CRITICAL
return email_logger
def test():
log_file = "project_name.log"
my_logger = logger(log_file, "project_name")
my_logger.info('this is a test')
try:
open('/path/to/does/not/exist', 'rb')
except Exception as e:
my_logger.error('Failed to open file', exc_info=True)
email_logger = critical_email_logger()
try:
email_logger.critical('Critical Event Notification~~~~~~')
except socket.error as error:
my_logger.critical('Could not send email via SMTPHandler: %r', error)
if __name__ == "__main__":
test()
原文地址:https://www.cnblogs.com/minding/p/12957939.html
- 《关于深化“互联网+先进制造业”发展工业互联网的指导意见》的系列解读 解读二:打造平台体系
- 2018最火的AI丶云计算丶大数据丶物联网丶量子计算五大热门之间的关系
- 人工智能或能帮助揭示永葆青春的秘密 寻减缓衰老药物
- 近百万的“荣耀”域名遭仲裁 两个终端的对决
- IT专业人员如何看待软件定义的数据中心市场
- 安正平:网络隐私保护不能止于关闭直播平台
- 摩拜与武汉地铁深度合作,网上买地铁票又多了一种渠道
- 从零推导神经网络之入门篇
- 支付宝红包到底是谁挣了?
- 计算机行业2018年度投资策略报告:人工智能为主线,关注行业落地
- 闪电网络原理通俗解释
- AI、机器学习和深度学习的关系及区别
- 145号文下发:摸底互联网平台与交易所合作
- 速读区块链 政府推进动态
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法