前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python-自定义模块mylog

python-自定义模块mylog

作者头像
py3study
发布2018-08-02 15:26:57
9270
发布2018-08-02 15:26:57
举报
文章被收录于专栏:python3python3python3

在编写程序中添加一大堆的代码就不是那么愉快的事情,好在python有强大的import,完全可以先配置好一个mylog.py,以后需要使用时直接导入mylog.py模块即可

编写mylog.py,代码如下

#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
import logging
import getpass
import sys

#定义类
class MyLog(object):
    '''这个类用于创建一个自用的log'''
    def __init__(self):
        user = getpass.getuser()
        self.logger = logging.getLogger(user)
        self.logger.setLevel(logging.DEBUG)
        logfile = sys.argv[0][0:-3] + '.log' #日志文件名
        formatter = logging.Formatter('%(asctime)-12s %(levelname)-8s %(name)-10s %(message)-12s')
        '''日志显示到屏幕上并输出到日志文件内'''
        logHand = logging.FileHandler(logfile)
        logHand.setFormatter(formatter)
        logHand.setLevel(logging.ERROR)  #只有错误才会被记录到logfile中
        
        logHandst = logging.StreamHandler()
        logHandst.setFormatter(formatter)
        self.logger.addHandler(logHand)
        self.logger.addHandler(logHandst)

    '''日志的5个级别对应以下的5个函数'''
    def debug(self, msg):
        self.logger.debug(msg)

    def info(self, msg):
        self.logger.info(msg)

    def warn(self, msg):
        self.logger.info(msg)

    def error(self, msg):
        self.logger.error(msg)

    def critical(self, msg):
        self.logger.critical(msg)

if __name__ == '__main__':
    mylog = MyLog()
    mylog.debug("I'm debug")
    mylog.info("I'm info")
    mylog.warn("I'm warn")
    mylog.error("I'm error")
    mylog.critical("I'm critical")

运行程序,应该看到的结果

blob.png
blob.png

还会在当前目录下,生成一个mylog.log文件,内容如下

blob.png
blob.png

下面再写一个testMylog.py,在程序中导入上面的mylog.py作为模块使用

编写testMylog.py,代码如下

#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
#导入之前的模块
from mylog import MyLog

if __name__ == '__main__':
    ml = MyLog()
    ml.debug("I am debug message")
    ml.info("I am info message")
    ml.warn("I am warn message")
    ml.error("I am error message")
    ml.critical("I am critical message")

运行结果如下

blob.png
blob.png

还会在当前目录下生成一个testMylog.log

blob.png
blob.png

在编程时,有时为了查看程序的进度和参数变化,在程序中间插入了大量的print.检查完毕后又要诼个删除,费时费力,使用log后就简单多了,直接保存为日志文件即可

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档