Python之日志处理(logging模块二实战)
实战篇
import logging
import logging.handlers LOG_PATH = r'./' def logConfig_1():
'''
配置 log 输出到文件 : fileName 中
'''
fileName = LOG_PATH + r"\%s.txt"%getlogname()
#print(lfname)
logformat='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'
logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别
filename=fileName,
filemode='a',##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
#a是追加模式,默认如果不写的话,就是追加模式
format=logformat
#日志格式
)
print('logConfig_2配置完成')
#logConfig_1()#配置log def logConfig_2():
'''
配置 log 输出到文件 和 控制台:
即 需要2个处理器:
1-输出到文件
2-输出到控制台
'''
logfilename = LOG_PATH + r"\%s.txt"%getlogname()
logformat_1='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s' #获取日志器 Logger ,并取名 'mylogger'
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)#统一设置log打印级别
logger.handler = [] #创建处理器 Handler:fileHandler、streamHandler
fileHandler = logging.FileHandler(logfilename)#输出到文件
fileHandler.setFormatter(logging.Formatter(logformat_1)) streamHandler = logging.StreamHandler()#输出到控制台
streamHandler.setLevel(logging.ERROR)#可单独对handler设置log打印级别
logformat_2=' %(name)s-%(asctime)s - %(module)s-%(funcName)s[line:%(lineno)d] - %(levelname)s: %(message)s'
streamHandler.setFormatter(logging.Formatter(logformat_2)) #将处理器添加到日志器中
logger.addHandler(fileHandler)
logger.addHandler(streamHandler) print('logConfig_2配置完成')
return logger
#全局变量
logger = logConfig_2()#配置log,在其他模块中引用的时候直接运用logger,不能再次创建 def getlogname():
logfilename = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
return logfilename if __name__ == '__main__':
#logging.debug('debug message %s - %d ......','hello', 1) logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
其他模块中引用:
import logging
import loggingtest1
from logConfig import * #logger = logConfig_2() #不能重新获取,否则会多次打印
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message') loggingtest1.test()
import logging
from logConfig import * #logger = logConfig_2() #同样不能调用该函数,否则会重复打印,调用n
次打印+n次 def test():
flag = 'test1-test'
logger.debug('debug message%s',flag)
logger.info('info message%s',flag)
logger.warning('warning message%s',flag)
logger.error('error message%s',flag)
logger.critical('critical message%s',flag)
注意:不能多次创建处理器(handler),否则会打印+n次,解决办法就是定义全局变量,使用同一个logger去打印
Python之日志处理(logging模块二实战)的更多相关文章
- Python之日志处理 logging模块
Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四 ...
- Python的日志记录-logging模块的使用
一.日志 1.1什么是日志 日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性. ...
- Python日志输出——logging模块
Python日志输出——logging模块 标签: loggingpythonimportmodulelog4j 2012-03-06 00:18 31605人阅读 评论(8) 收藏 举报 分类: P ...
- python基础学习十 logging模块详细使用【转载】
很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出 ...
- Python进阶(十一)----包,logging模块
Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文 ...
- Python 入门之 内置模块 --logging模块
Python 入门之 内置模块 --logging模块 1.logging -- 日志 (1)日志的作用: <1> 记录用户信息 <2> 记录个人流水 <3> 记录 ...
- python日志记录-logging模块
1.logging模块日志级别 使用logging模块简单示例: >>>import logging >>>logging.debug("this's a ...
- Python模块:日志输出—logging模块
1. logging介绍 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/ ...
- Python中的日志管理Logging模块
1.基本的用法 import logging logging.debug('This is debug message') logging.info('This is info message') l ...
随机推荐
- Pointers and Memory
Stanford CS Education Library #102 一.Basic Pointers 指针主要有两个用途:使不同的代码段共享信息.方便链表(树)的处理. 指针示意图: derefer ...
- JAVA_WEB--jsp语法
JSP声明 一个声明语句可以声明一个或多个变量.方法,供后面的Java代码使用.在JSP文件中,必须先声明这些变量和方法然后才能使用它们. JSP声明的语法格式: <%! declaration ...
- POJ 1287 Networking 垃圾题目
Networking Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22362 Accepted: 11372 Desc ...
- Cypress 自动化环境搭建
1.Cypress 下载: 官网下载,下载后直接解压即可,解压后便可单机 exe 文件打开 Ps:直接打开 exe 是会报错找不到 json文件的,所以还要安装依赖环境 运行 cypress 项目前, ...
- Linux常用的安全加固
一.账号和口令 1.1 禁用或删除无用账号 减少系统无用账号,降低安全风险. 操作步骤userdel <用户名> //删除不必要的账号.passwd -l <用户名> //锁定 ...
- Redis超详细总结
NoSQL概述 一.数据存储的演化史 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付.在那个时候,更多的都是静态网页,动态交互类型的网站不多. 上述 ...
- E. Count The Blocks(找数学规律)
\(\color{Red}{先说一下自己的歪解(找规律)}\) \(n=1是答案是10\) \(n=2时答案是180\) \(n=3时模拟一下,很容易发现答案是2610\ \ 180\ \ 10\) ...
- 播放音乐(mciSendString)
1.需要引用命名空间using System.Runtime.InteropServices; 这里只是做了个简单的播放功能,想了解更多查看它的官方文档 [DllImport("winmm. ...
- tp5中提示错误A non well formed numeric value encountered
问题因为自动完成时间导致的 原来我的数据库是这样的 修改成下面这样就好了
- DHCP报文(1)
DHCP报文 1.地址申请类型(4步工作原理,常考) (1)此题是典型的四步工作原理,在其配置过程中由于没有分配IP地址,用的是广播形式,所以其4中报文类型的目的IP地址均为255.255.255.2 ...