2008年12月11日星期四

关于Logging模块

之前费了不少力气去写打印LOG的库,当时还被一些问题困扰了一段时间,当这个库写得足够用的时候才发现,原来库里面早已提供了一个功能强大的Logging模块。一分钟前还为自己的成果得意洋洋,一分钟后发现原来这些都是白费力气。常常是绕了一个大圈之后回到原点,抬头一看,原来你就在这里,呵呵。得花时间好好来研究一下Python自带的这些库,绝大部分的时候这些已经够用了。先作个标记,回头再用Logging重写个适用自己需要的库。


# 添加于11 Jan, 2009 (中光棍节?)
import os
import logging
import logging.handlers

def CreateLogger(filename, logname='', maxbytes=0, backupcount=0):
    currdir = os.getcwd()
    if not os.path.exists(os.path.join(currdir, 'Log')):
       try:
         os.mkdir(os.path.join(currdir, 'Log'))
       except:
         raise Exception, 'Can\'t create Log directory'
   filename = os.path.join(currdir, os.path.join('Log', filename))
   logger = logging.getLogger(logname)
   logger.setLevel(logging.DEBUG)

   formatter = logging.Formatter('%(asctime)s %(lineno)04.0f %(levelname)-5s --> %(message)s')

   sh = logging.StreamHandler()
    sh.setLevel(logging.DEBUG)
    sh.setFormatter(formatter)
    logger.addHandler(sh)

   rh = logging.handlers.RotatingFileHandler(
filename, maxBytes=maxbytes, backupCount=backupcount)
   rh.setLevel(logging.DEBUG)
   rh.setFormatter(formatter)
   logger.addHandler(rh)
   return logger

def CreateLoggerEx(filename, logname, maxbytes=0, backupcount=0):
    currdir = os.getcwd()
   if not os.path.exists(os.path.join(currdir, 'Log')):
       try:
         os.mkdir(os.path.join(currdir, 'Log'))
       except:
         raise Exception, 'Can\'t create Log directory'
   filename = os.path.join(currdir, os.path.join('Log', filename))
    logger = logging.getLogger(logname)
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(asctime)s %(lineno)04.0f %(levelname)-5s --> %(taskname)s :: %(message)s')

   sh = logging.StreamHandler()
    sh.setLevel(logging.DEBUG)
    sh.setFormatter(formatter)
    logger.addHandler(sh)

    rh = logging.handlers.RotatingFileHandler(
filename, maxBytes=maxbytes, backupCount=backupcount)
   rh.setLevel(logging.DEBUG)
   rh.setFormatter(formatter)
   logger.addHandler(rh)
    return logger

没有评论: