zoukankan      html  css  js  c++  java
  • 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")
  • 相关阅读:
    SpringBoot jar包不支持jsp
    Spring Boot 启动报错:LoggingFailureAnalysisReporter
    spring boot与spring mvc的区别是什么?
    解决配置JAVA_HOME JDK版本不变的问题
    Linux下修改Mysql的用户(root)的密码
    CentOS/Linux 解决 SSH 连接慢
    Linux查看进程的所有子进程和线程
    Linux命令之pstree
    使用awk批量杀进程的命令
    lucene 自定义评分
  • 原文地址:https://www.cnblogs.com/lexus168/p/12703397.html
Copyright © 2011-2022 走看看