python写日志文件操作类与应用示例
作者:轻舞肥羊 发布时间:2021-09-29 01:16:38
标签:python,写日志文件
本文实例讲述了python写日志文件操作类与应用。分享给大家供大家参考,具体如下:
项目的开发过程中,日志文件是少不了的,通过写日志文件,可以知道程序运行的情况。特别当部署在生产环境中的时候,这个时候一般不能debug , 当然在有些情况时可以 remote debug (远程debug)。那种情况另当别论。还是用通常的写日志的方法,比如在 java 中,经常可以看到 log4j,sf4j,logback等三方组件来写日志。
在python中如何实现呢,其实python 本身也带了日志操作的库。可以直接使用。这里我把在项目中用到的整理了一下,分享在下面,这个实现的方法,主要有两点
1. 写日志的类
2.日志配置文件(handler,logger,以及日志保存的路径等)
写日志的类
'''
Created on 2012-2-17
@author: yihaomen.com
'''
import logging.config
import os
class INetLogger:
log_instance = None
@staticmethod
def InitLogConf():
currentDir=os.path.dirname(__file__)
INetLogger.log_instance = logging.config.fileConfig(currentDir+os.path.sep+"logger.ini")
@staticmethod
def GetLogger(name = ""):
if INetLogger.log_instance == None:
INetLogger.InitLogConf()
INetLogger.log_instance = logging.getLogger(name)
return INetLogger.log_instance
if __name__ == "__main__":
logger = INetLogger.GetLogger()
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")
logHello = INetLogger.GetLogger("root")
logHello.info("Hello world!")
日志配置文件,与上面的类在同一文件夹下 logger.ini
[loggers]
keys=root,mysql,socket
[handlers]
keys=consoleHandler,rotateFileHandler
[formatters]
keys=simpleFormatter
[formatter_simpleFormatter]
format=[%(asctime)s][%(levelname)s] [%(filename)s:%(lineno)d] [thread:%(thread)d]: %(message)s
[logger_root]
qualname=root
level=DEBUG
handlers=consoleHandler,rotateFileHandler
[logger_mysql]
qualname=mysql
level=DEBUG
handlers=rotateFileHandler
[logger_socket]
qualname=socket
level=ERROR
handlers=rotateFileHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('c:/logs/InetServer.log', 'a', 2000000, 9)
如果你用了 handler_rotateFileHandler 的话,这样日志就会保存到 才c:/logs/InetServer.log 文件里面,而且当日志超过2000000 d的时候,重新另外生成一个文件,保存9天的记录,你可以配置成30,这样就保存了最近一个月的日志记录。
希望本文所述对大家Python程序设计有所帮助。
来源:http://www.yihaomen.com/article/python/262.htm
0
投稿
猜你喜欢
- 排序算法是《数据结构与算法》中最基本的算法之一,也是面试必背题,为方便技术交流,文末创建技术交流群。排序算法可以分为内部排序和外部排序,内部
- 本文实例讲述了Python读取Pickle文件信息并计算与当前时间间隔的方法。分享给大家供大家参考,具体如下:python—–读取Pickl
- ECharts作为一个图标库已经被大家广泛使用,它提供了各式各样的图表类型,但是在我们日常使用中可能只会用到其中的某几个图表类型,常用的基本
- Vue设置反向代理和cookie设置项目场景最近使用Vue开发一个新的项目,因为服务器还没到,调取后端本地接口,因为请求接口的时候没有跨域,
- hypot()方法返回的欧几里德范数 sqrt(x*x + y*y).语法以下是hypot()方法的语法:hypot(x, y)
- 数字字符串前后有空格没事:>>> print(int(" 3 "))3但是下面这种带小数点的情况是不可
- 本文实例讲述了python实现的系统实用log类。分享给大家供大家参考。具体如下:每个系统都必不可少会需要一个log类,方便了解系统的运行状
- 本文实例讲述了golang实现sql结果集以json格式输出的方法。分享给大家供大家参考,具体如下:func getJSON(sqlStri
- 目录简介创建线程构造器方式继承方式守护线程线程本地数据定时器简介Python 通过 _thread 和 threading 模块提供了对多线
- 前言:1、gevent库可以轻松实现并发同步或异步编程。gevent中使用的主要模式是Greenlet,它是以C扩展模块的形式访问Pytho
- 经纬度坐标转换最常见办法就是调用第三方 API,例如百度、高德地图等服务平台,提供了相应的功能接口,它们的这类技术已经非常成熟啦,准确稳定,
- atan 和 atan2 都是反正切函数,返回的都是弧度对于两点形成的直线,两点分别是 point(x1,y1) 和 point(x2,y2
- 你说的就是真正的计数器,它只在有新的用户进入网站时,计数器才会加1,忠实可靠。把下列代码放到的global.asa的sessio
- 在我之前解释了flask如何支持多线程主要通过两个类来实现,LocalStack和Local,在Local中有两个属性,__storage_
- 对于DBA来说,监控磁盘使用情况是必要的工作,然后没有比较简单的方法能获取到磁盘空间使用率信息,下面总结下这些年攒下的脚本:最常用的查看磁盘
- 一、前置基础1. go 函数基础在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。func 函数名
- 关于python数据分析常用库pandas中的DataFrame的loc和iloc取数据 基本方法总结归纳及示例如下:1.准备一组DataF
- 代码如下:function HTMLEncode(fString) fString=Replace(fString,&q
- 本文主要介绍在 windows 10 系统中安装 Anaconda3 的详细过程。下载Anaconda 官网下载地址目前最新版本是 pyth
- 1、需要将时间字符串转换成datetime类型,语法:data[‘time'] = pd.to_datetime(data[‘tim