logging日志模块

#logging日志打印模块

import logging
from tools.project_path import *

class MyLog:
    def my_log(self,msg,level):
        # 定义一个日志收集器
        my_logger = logging.getLogger()
        # 设定级别   不指定级别会默认收集和输出warning级别以上的
        my_logger.setLevel("DEBUG")
        # 设置输出格式
        formatter = logging.Formatter(
            "%(asctime)s -%(levelname)s - %(filename)s[line:%(lineno)d] %(levelname)s-日志信息:%(message)s")
        # 创建一个我们自己的输出渠道控制台
        ch = logging.StreamHandler()
        ch.setLevel("DEBUG")
        ch.setFormatter(formatter)
        # 指定输出到文件(追加写入)
        fh = logging.FileHandler(log_path, encoding="utf-8")
        fh.setLevel("DEBUG")
        fh.setFormatter(formatter)
        # 两者对接
        my_logger.addHandler(ch)
        my_logger.addHandler(fh)
        # 收集日志
        if level == "DEBUG":
            my_logger.debug(msg)
        elif level == "INFO":
            my_logger.info(msg)
        elif level == "WARNING":
            my_logger.warning(msg)
        elif level == "ERROR":
            my_logger.error(msg)
        elif level == "CRITICAL":
            my_logger.critical(msg)
        #关闭日志收集器
        my_logger.removeHandler(ch)
        my_logger.removeHandler(fh)

    def debug(self,msg):
        self.my_log(msg,"DEBUG")

    def info(self,msg):
        self.my_log(msg,"INFO")

    def warning(self,msg):
        self.my_log(msg,"WARNING")

    def error(self,msg):
        self.my_log(msg,"ERROR")

    def critical(self,msg):
        self.my_log(msg,"CRITICAL")


if __name__ == '__main__':
    my_logger = MyLog()
    my_logger.debug("1")
    my_logger.info("2")
    my_logger.error("3")

 

还有一种方式,把logging写成配置文件,然后去读取配置

log.conf

[loggers]
keys=root,infoLogger

[logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler

[logger_infoLogger]
handlers=consoleHandler,fileHandler
qualname=infoLogger
propagate=0

[handlers]
keys=consoleHandler,fileHandler

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=INFO
formatter=form01
args=('../logs/runlog.log', 'a')

[formatters]
keys=form01,form02

[formatter_form01]
format=%(asctime)s -%(levelname)s - %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

[formatter_form02]
format=%(asctime)s -%(levelname)s - %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

 

调用时,test_log.py

import logging
import logging.config
import os

CON_LOG='./log.conf'
logging.config.fileConfig(CON_LOG)
logging=logging.getLogger()

logging.info("test")

 

posted @ 2020-04-15 10:01  反着来就对了  阅读(175)  评论(0)    收藏  举报