python-整理-logging日志

时间:2023-01-31 18:24:33

python的日志功能模块是logging 功能和使用方式非常类似于log4

如何使用logging:

# 导入日志模块
import logging
# 使用配置文件设置日志时,需要导入这个模块
import logging.config
class MyLog:
'''日志类,用于将日志信息写入到.txt文件中''' # 载入配置信息,从Logging.cfg
__loadcfg=logging.config.fileConfig("Loggers/Logging.ini") # 获取一个logger对象,通过这个名字参数可以保证在当前程序进程中其它地方获取日志对象时,是同一个日志对象.
__dblog=logging.getLogger('dblog') @staticmethod
def AddLog(msg,logrefname=None):
'''// 添加日志
// 1.msg:日志内容
// 2.logrefname:通过这个名字获取日志对象,默认是dblog.其它名字要到配置文件里查看
'''
if logrefname is not None:
MyLog.__dblog=logging.getLogger(logrefname) MyLog.__dblog.debug(msg)

使用时调用 MyLog.AddLog(logmsg)就加入日志了.

以下是配置文件Logging.ini

# 这是python的logging日志模块的配置文件
# 遇到的问题有几个:使用logging.config.fileConfig("Logging.ini")载入后,启动程序
# .报错.KeyError Formatters 在网上查了很久,说是日志路径的问题,结果就是路径问题
# .报错gbk... 用的是VS2013,新建的python文件不是utf-8编码,需要改一下编码.可是对于这个Logging.ini,居然要改回gb2312().不改的话就报这错误. # 指示日志引用名,通过这个名字,能找到同一个日志对象
[loggers]
keys=root,dblog # 指示日志的输出,可以输出到控制台,文件,发Email,输出到SOCKET等等
[handlers]
keys=handroot,handdb # 指示日志输出格式
[formatters]
keys=formroot,formdb # root日志对象,这个相当于父类,必需要有
[logger_root]
level=NOTSET
handlers=handroot # 这是自己建立的日志对象,propagate=0表示不继承父类,=1表示继承.(研究后得出结论:如果选继承,日志也会输出到父类的handler上)
[logger_dblog]
level=DEBUG
handlers=handdb
propagate=
qualname=dblog [handler_handroot]
class=StreamHandler
level=NOTSET
formatter=formroot
args=(sys.stdout,) # 这使用了回转日志(class指示使用的是哪个hander,logging有很多handler),就是当日志达到一定大小后,会另建一个新文件
[handler_handdb]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=formdb
args=('dblog.txt', 'a',) [formatter_formroot]
format=F1 %(asctime)s %(levelname)s %(message)s
datefmt=
class=logging.Formatter # 关于formatter类的详细情况,请查看本机文档在d:/python学习中有链接
[formatter_formdb]
format=%(asctime)s 类型 : %(name)s 内容 : %(message)s
datefmt=%Y-%m-%d %H:%M:%S
class=logging.Formatter

也可以在代码中配置日志,使用这个方法载入配置

logging.basicConfig()

一个非常详细的日志使用请看这里

http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html