logging 日志输出

1、控制台基本输出

代码:

import logging

logging.info("hhhhhhh   info message")
logging.debug("ddddddd  debug message")
logging.warning("wwwww   warning message")
logging.error("eeeeee   error message")
logging.critical("ccccc   critical message")

控制台输出:

默认输出级别大于等于warning的日志。

2、自定义日志格式,控制台输出&&本地文件输出

代码:

# -*- coding:utf-8 -*-
import logging
import os

class log:
    def __init__(self):
        # 文件命名
        self.filename=os.path.join(os.getcwd(),"api/","log.txt")
        self.logger=logging.getLogger()
        self.logger.setLevel(logging.DEBUG)
        #日志输出格式
        self.formatter=logging.Formatter("%(asctime)s-%(filename)s-%(levelname)s-%(message)s")

    def log_out(self,level,message):
        # 创建一个StreamHandler,用于输出到控制台
        sh=logging.StreamHandler()
        sh.setLevel(logging.DEBUG)
        sh.setFormatter(self.formatter)
        self.logger.addHandler(sh)

        # 创建一个FileHandler,用于写到本地
        fh=logging.FileHandler(self.filename)
        fh.setLevel(logging.DEBUG)
        fh.setFormatter(self.formatter)
        self.logger.addHandler(fh)

        if level=="info":
            self.logger.info(message)
        elif level=="debug":
            self.logger.debug(message)
        elif level=="warning":
            self.logger.warning(message)
        elif level=="error":
            self.logger.error(message)
        elif level=="critical":
            self.logger.critical(message)

        #避免日志重复输出
        self.logger.removeHandler(sh)
        self.logger.removeHandler(fh)

        #关闭打开的文件
        sh.close()
        fh.close()

    def info(self,message):
        self.log_out("info",message)

    def debug(self,message):
        self.log_out("debug",message)

    def warning(self,message):
        self.log_out("warning",message)

    def error(self,message):
        self.log_out("error",message)

    def critical(self,message):
        self.log_out("critical",message)


if __name__=="__main__":
    l=log()
    l.info("this is info message")
    l.debug("this is debug message")
    l.warning("this is warning message")
    l.error("this is error message")
    l.critical("this is critical message")

控制台输出:

本地日志文件log.txt输出:

发布了23 篇原创文章 · 获赞 5 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/CatherineC20150619/article/details/104009396
今日推荐