简单实用的日志类CLog (Python版)

本文展示了如何使用Python编写一个简单的日志记录类CLog,包括设置日志文件、控制日志级别、记录不同级别的日志信息等功能。通过实例演示了如何在代码中使用此类来实现基本的日志记录需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#coding: utf-8
import time

'''
/*****************************************************************
  Function     : GetCurrFmtTime
  Description  : 获取当前时间
******************************************************************/
'''
def GetCurrFmtTime() :
    t = time.localtime()
    strtime = "%02d/%02d %02d:%02d:%02d" % (t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec)
    return strtime
'''
/*****************************************************************
  日志类 CLog
******************************************************************/
'''
class CLog :
    def __init__(self, logFile='log.txt') :
        self.DEBUG = True
        self.logFile = logFile

    def __log__(self, *params) :
        msgs = GetCurrFmtTime()
        for msg in params:
            if msgs != "" : msgs += " "
            msgs += str(msg)
        print msgs
        self.__write__(msgs)

    def __write__(self, msgs=None) :
        if len(self.logFile) > 0 :
            f = open(self.logFile, 'at+')
            if msgs != None : f.write(msgs)
            f.write("\n")
            f.close()

    #####################################################################
    def setDebug(self, dbgFlag ) :
        self.DEBUG = dbgFlag

    def setLogFile(self, logName ) :
        self.logFile = logName

    ###########################################
    def debug(self, *params) :
        if self.DEBUG == True :
            self.__log__('DBG:', *params)

    def info(self, *params) :
        self.__log__('INF:', *params)

    def error(self, *params) :
        self.__log__('ERR:', *params)

    ###########################################
    def blankLine(self) :
        print
        self.__write__()

    def oneLine(self, char='=') :
        line = char
        for i in range(1, 50) :
            line += char
        print line
        self.__write__(line)

    def titleLog(self, title) :
        char = '*'
        line = char
        for i in range(1, 50) :
            line += char

        msgs = '\n'
        msgs += line + '\n\n'
        msgs += '\t' + title + '\n\n'
        msgs += line + '\n\n'
        print msgs
        self.__write__(msgs)

#################################################################
def test() :
    log = CLog()
    log.titleLog('测试CLog类')
    
    log.oneLine('#')

    log.setDebug(False)
    log.debug(2,3,4)
    log.info('Hello', 'World', 100)
    log.blankLine()
    CLog().error('This is a test.')
    
    log.setDebug(True)
    log.debug(20,30,40)
    
    log.blankLine()
    log.oneLine()
######################
if __name__ == '__main__':
    test()

////////////////////////////////////////////README//////////////////////////////////////////////////// // DebugLog--write some log for debug // //初衷: 本开发的时候,有些功能点是可以项目无关的,比如是解析某个文件;开发完成之后,测试的话, // // 需要整改项目程序运行、测试,功能点的触发条件比较麻烦。所以,有的时候,对于这样的功能点, // // 我会选择进行本地开发,然后再合到项目中去. // // 但是,每次功能点开发的时候,一般用的是printf直接打屏,但是项目中用的是写文件,所以移植 // // 的时候还需要进行不少改动. // // 于是,我就想自己写个log,可以与项目的日志函数进行适配。那么,上面的问题可以得到比较好的 // // 解决(或者说是规避)。 // //附注:我不知道这样做有没有意义,也就是根据自己的经验,试着做了下。经验不足,水平有限,肯定会 // // 导致设计不足,不对,甚至是整个设计没有意义。如果是这样,希望能不吝交流、赐教. // // EMail: hu__haifeng@163.com // ////////////////////////////////////////////////////////////////////////////////////////////////////// //Version :0.5 // //Description:该本打造了基本的架构,并且实现了不带参数的打印日志(仅仅是字符串),可以进行监督的测试.// // 由于我项目经验有限,仅仅见过两种不同的项目日志分隔,所以也只能以此为参考,不一定可以 // // 适配其他项目日志函数. // //Adapter :可以用宏定义来进行适配。比如: // // #ifdef __CLOG_H__ // // #define DEBUG(VAR) mylog.Print(__FILE__, __LINE__, VAR, LOG_DEBUG) // // #else // // #define DEBUG(VAR) function //项目用的标准的日志函数. // // #endif // // // //Plan :1.0本写成可以带参数的日志。2.0本实现客户端、服务器(可以支持不同的进程写日志)。// //////////////////////////////////////////////////////////////////////////////////////////////////////
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值