python整理十三 迷你日誌

2021-04-20 03:58:06 字數 2635 閱讀 1252

寫個小點的程式,寫日誌太麻煩了,大點的程式,不寫日誌是萬萬不行的,鑑於日誌頻繁的使用,對python的logging稍微封裝一下,適合自己的需求:

#coding=utf-8

import os, logging, sys

from logging.handlers import rotatingfilehandler as rfhandler

class commlogger:

log_file_size_max    = 1024

# byte

log_file_backup_max  = 5

#  def __init__(self):

self.__log_argv = 

self.__log_fmt_t = '%(f_info)s%(ctrl)s%(ctime)s%(ctrl)s%(msg)s%(ctrl)s%(tail)s%(ctrl)s' % /

self.__log_fmt = logging.formatter(self.__log_fmt_t)

self.__loggers = {}

def __getlogpath(self, log_name):

fpath = os.path.join(self.__log_argv['dirname'], log_name)

ifnot os.path.exists(fpath):

os.makedirs(fpath)

return fpath

def __initlog(self, log_name, level, bprint):

if log_name not

inself.__loggers:

logger = logging.getlogger(log_name)

if len(logger.handlers) == 0:

if bprint:

chdlr = logging.streamhandler(sys.stdout)

chdlr.setformatter(self.__log_fmt)

logger.addhandler(chdlr) 

else:

fname = os.path.join(self.__getlogpath(log_name), log_name + self.__log_argv['extend'])

fhdlr = rfhandler(fname, 'a', commlogger.log_file_size_max, commlogger.log_file_backup_max,)

fhdlr.setformatter(self.__log_fmt)

logger.addhandler(fhdlr)

logger.setlevel(level)

self.__loggers[log_name] = logger  

return

self.__loggers[log_name]

def getlogger(self, log_name = none, bprint = false, level= logging.debug, ):

if log_name is

none:

log_name = self.__log_argv['name_default']

if log_name not

inself.__loggers:

self.__initlog(log_name, level, bprint)

return

self.__loggers[log_name]

def mini_log(fn):

def moniter(*args, **argkv):

return fn(*args, **argkv)

logger = commlogger().getlogger(fn.func_name)

log_info = 

logger.info('the function of %(fn_name)s has been running.%(ctrl)s%(fn_code)s' % log_info)

return moniter    

@mini_log

def test():

print

'test logging module.'

if __name__ == '__main__':

ccls = commlogger()

log0 = ccls.getlogger()

log1 = ccls.getlogger('log1', true)

for i in range(3):

log0.debug('debug')

log0.info('info')

log0.warning('warn')

log0.error('error')

log0.critical('critical')

log1.debug('debug')

log1.info('info')

log1.warn('warn')

log1.error('error')

log1.critical('critical')        

test()

print

'end___'

Shell 十三問整理

組成 literal meta 就是一些字母單詞,組成命令的 特殊保留字元,對於shell有特殊意義 重點meta有分command meta和shell meta 舉例awk 1.txt 這裡 會被解釋成shell meta。awk 1.txt 中的 被解釋成command meta 常見meta...

學習Python 十三

import signal define signal handler function def myhandler signum,frame print i received signum register signal.sigtstp s handler signal.signal signal...

Python入門(十三)

1.名字空間 a.local 區域性命名空間 檢視 local b.global 全域性命名空間,只要在全域性命名空間的內容到處都能使用 檢視 globals name 模組名,如果是執行檔案,值為 main builtins 內建名字空間物件,用於檢視內建名字空間中的內容 file 當前檔案的絕對...