Python 日志按天输出

#! /usr/bin/python # -*- coding: utf-8 -*
import logging
import logging.config

#日志按日输出 单进程适用
class Logbyday():
    #设置统一格式
    LOGGING_MSG_FORMAT  = '[%(asctime)s] [%(levelname)s] [%(module)s] [%(funcName)s] [%(lineno)d] %(message)s'
    LOGGING_DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
    def __init__(self, file_name):
        logging.basicConfig(level=logging.DEBUG,format=Logbyday.LOGGING_MSG_FORMAT,datefmt=Logbyday.LOGGING_DATE_FORMAT)
        self.file_name = file_name
    
    def get_logger(self, handler):
        #返回一个日志实例 后续可设置日志格式 可以获取多个日志实例
        return logging.getLogger(handler)
 
    #设置指定实例的输出格式
    def set_hander(self, cut_time, intval, bakcout, logger, no_stream = False): #此处的no_stream 默认不输出到终端
        #设置文件输出
        file_handler = logging.handlers.TimedRotatingFileHandler(self.file_name,when=cut_time, interval=intval,backupCount=bakcout) #每天产生一个日志,凌晨切割, 保留n天
        file_handler.setFormatter(logging.Formatter(Logbyday.LOGGING_MSG_FORMAT))
        logger.addHandler(file_handler)
        #设置终端输出
        #调试正常可关闭注释
        if no_stream:
            stream_handler = logging.StreamHandler()
            stream_handler.setLevel(logging.INFO) #后续不输出时改成其他级别
            stream_handler.setFormatter(logging.Formatter(Logbyday.LOGGING_MSG_FORMAT))
            logger.addHandler(stream_handler)    

使用实例:引入该模块,创建实例xxx_logger

from logbyday import Logbyday

root_log = Logbyday(log_path)
    #FTP使用的log实例
    sftp_logger = root_log.get_logger('SFTP_LOG')
    root_log.set_hander(cut_time = 'midnight',intval =1,bakcout = 15, logger = sftp_logger)

 

你可能感兴趣的:(Python)