博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log 模块使用 (直接用的方法)
阅读量:4992 次
发布时间:2019-06-12

本文共 2721 字,大约阅读时间需要 9 分钟。

前情提要:

  生活中经常用到log 模块. 但是原生的log 模块复杂或者有许多不好用得地方,

在此记录一个经常用的log 的基本操作方法

  一:首先导入模块

import logging.config     #这个和底下的logging 不重复import osimport logging

 

  二:定义日志输出格式

    1:标准模式

 

standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \                  '[%(levelname)s][%(message)s]' #其中name为getlogger指定的名字 依次是:  时间  线程名  方法名  哪个文件,第几行  日志等级  日志内容

 

 

 

    2:稍稍简单

 

simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s' 同上

 

 

 

    3:给傻子看的日志

 

id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'

 

 

 

 

  三:定义日志的生成位置

 

logfile_dir = os.path.dirname(os.path.abspath(__file__))  # log文件的目录logfile_name = 'bog.log'  # log文件名             文件名可以自己定义

 

 

  四:判断是否存在log文件,如果不存在那么就创建一个

 

if not os.path.isdir(logfile_dir):    os.mkdir(logfile_dir)

 

 

 

  五:拼接log日志的路径, 如果生成不同文件那么久多配置路径

 

logfile_path = os.path.join(logfile_dir+'/'+'log', logfile_name)logfile_path1 = os.path.join(logfile_dir+'/'+'log', logfile_name+'111')

 

 

 

 

  六:log配置字典

 

# log配置字典LOGGING_DIC = {    'version': 1,    'disable_existing_loggers': False,    'formatters': {        'standard': {            'format': standard_format        },        'simple': {            'format': simple_format        },    },    'filters': {},    'handlers': {        #打印到终端的日志        'console': {            'level': 'DEBUG',            'class': 'logging.StreamHandler',  # 打印到屏幕            'formatter': 'simple'        },        #打印到文件的日志,收集info及以上的日志        'default': {            'level': 'DEBUG',            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件            'formatter': 'standard',            'filename': logfile_path,  # 日志文件            'maxBytes': 800,  # 日志大小 5M            'backupCount': 5,            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了        },        'default1': {            'level': 'DEBUG',            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件            'formatter': 'standard',            'filename': logfile_path1,  # 日志文件            'maxBytes': 800,  # 日志大小 5M            'backupCount': 5,            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了        },    },    'loggers': {        #logging.getLogger(__name__)拿到的logger配置        '': {            'handlers': ['default','default1', 'console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕            'level': 'DEBUG',            'propagate': True,  # 向上(更高level的logger)传递        },    },}

 

 

 

 

 

  七:创建调用函数

 

def load_my_logging_cfg(path):    logging.config.dictConfig(LOGGING_DIC)  # 导入上面定义的logging配置    logger = logging.getLogger(path)  # 生成一个log实例              # logger.info('It works!')  # 记录该文件的运行状态    return logger 传入的函数名字 返回的logger 其他内内容直接调用+()   实例化调用即可

 

 

  八:调用

 

 

转载于:https://www.cnblogs.com/baili-luoyun/p/10241562.html

你可能感兴趣的文章
吴裕雄 实战PYTHON编程(8)
查看>>
xhtml
查看>>
poj 1113 Wall (凸包模板题)
查看>>
cf 535B Tavas and SaDDas
查看>>
OO-面对对象的特征--多态、抽象
查看>>
看准网免登陆查看
查看>>
用pygame实现打飞机游戏-1-搭建框架
查看>>
io编程,bio,nio,aio
查看>>
windows 关于时间的计算
查看>>
面向对象编程思想-代理模式
查看>>
HttpClient获取Cookie的两种方式
查看>>
Windows 7中的电源计划及维护
查看>>
Spring MVC 配置类 WebMvcConfigurerAdapter
查看>>
js获取url参数
查看>>
程序员如何优雅的挣零花钱?
查看>>
推荐 2 个简历模板及 2 大加分技巧
查看>>
关于伪类选择器中一个冒号和两个冒号的区别
查看>>
理解敏捷开发准则
查看>>
[beta cycle]daily scrum10_2.25
查看>>
【转载】和 Thrift 的一场美丽邂逅
查看>>