第一种方法比较简单:

在Model下面创建LogConfig.py文件

import logging

# 配置日志信息

# 日志保存位置

log_file = "F:/Git/WebdriverTest/mylog.log"

logging.basicConfig(level=logging.DEBUG,

          format='[%(levelname)s][%(funcName)s][%(asctime)s]%(message)s',

          datefmt='%m-%d %H:%M',

          filename='log_file',

          filemode='w')

# 定义一个Handler打印INFO及以上级别的日志到sys.stderr

console = logging.StreamHandler()

console.setLevel(logging.INFO)

# 设置日志打印格式

formatter = logging.Formatter('[%(levelname)s][%(funcName)s][%(asctime)s]%(message)s')


console.setFormatter(formatter)

# 将定义好的console日志handler添加到root logger

logging.getLogger('').addHandler(console)


引用日志模块时只需要导入LogConfig.py文件就可以了,导入时提示ImportError: No module named LogConfig

解决办法类似于http://10250691.blog.51cto.com/10240691/1868845


打印日志:

LogConfig.logging.info(u'这是日志……')



第二种方法:


import logging.handlers

 

class FinalLogger():

 

    logger = None

    

    levels = {"n" : logging.NOTSET,

    "d" : logging.DEBUG,

    "i" : logging.INFO,

    "w" : logging.WARN,

    "e" : logging.ERROR,

    "c" : logging.CRITICAL}

     

    log_level = "d"

    log_file = "final_logger.log"

    log_max_byte = 10 * 1024 * 1024;

    log_backup_count = 5

    

    @staticmethod

    def getLogger():

        if FinalLogger.logger is not None:

            return FinalLogger.logger

        log_file = "./FinalLogger.log_file"

        logging.basicConfig(filename = log_file,level = logging.DEBUG)


        FinalLogger.logger = logging.Logger("oggingmodule.FinalLogger")

        log_handler = logging.handlers.RotatingFileHandler(filename = FinalLogger.log_file,\

        maxBytes = FinalLogger.log_max_byte,\

        backupCount = FinalLogger.log_backup_count)

        log_fmt = logging.Formatter("[%(levelname)s][%(funcName)s][%(asctime)s]%(message)s")

        log_handler.setFormatter(log_fmt)

        FinalLogger.logger.addHandler(log_handler)

        FinalLogger.logger.setLevel(FinalLogger.levels.get(FinalLogger.log_level))

        return FinalLogger.logger

    

# 把日志输出到控制台

console = logging.StreamHandler()

console.setLevel(logging.INFO)

FinalLogger.getLogger().addHandler(console)

logger = FinalLogger.getLogger()


第二种方法效果和第一种方法效果一样的,暂时还没发现有什么优点,还是第一种方法简单