logging的小封装可以参考一下

 
import logging
import os

from Common.handle_config import conf
from Common.handle_path import logs_dir

class MyLogger(logging.Logger):

    def __init__(self,file=None):
        # 设置输出级别、输出渠道、输出日志格式
        # super().__init__(name,level)
        super().__init__(conf.get("log","name"),conf.get("log","level"))

        # 日志格式
        fmt = '%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d line:%(message)s'
        formatter = logging.Formatter(fmt)

        # 控制台渠道
        handle1 = logging.StreamHandler()
        handle1.setFormatter(formatter)
        self.addHandler(handle1)

        if file:
            # 文件渠道
            handle2 = logging.FileHandler(file,encoding="utf-8")
            handle2.setFormatter(formatter)
            self.addHandler(handle2)


# 是否需要写入文件
if conf.getboolean("log","file_ok"):
    file_name = os.path.join(logs_dir,conf.get("log","file_name"))
else:
    file_name = None


logger = MyLogger(file_name)

logger.info("1111111111111111")
%(name)s            Name of the logger (logging channel)
%(levelno)s         Numeric logging level for the message (DEBUG, INFO,
                    WARNING, ERROR, CRITICAL)
%(levelname)s       Text logging level for the message ("DEBUG", "INFO",
                    "WARNING", "ERROR", "CRITICAL")
%(pathname)s        Full pathname of the source file where the logging
                    call was issued (if available)
%(filename)s        Filename portion of pathname
%(module)s          Module (name portion of filename)
%(lineno)d          Source line number where the logging call was issued
                    (if available)
%(funcName)s        Function name
%(created)f         Time when the LogRecord was created (time.time()
                    return value)
%(asctime)s         Textual time when the LogRecord was created
%(msecs)d           Millisecond portion of the creation time
%(relativeCreated)d Time in milliseconds when the LogRecord was created,
                    relative to the time the logging module was loaded
                    (typically at application startup time)
%(thread)d          Thread ID (if available)
%(threadName)s      Thread name (if available)
%(process)d         Process ID (if available)
%(message)s         The result of record.getMessage(), computed just as
                    the record is emitted

import os

from Common.handle_path import conf_dir

class HandleConfig(ConfigParser):

    def __init__(self,file_path):
        super().__init__()
        self.read(file_path, encoding="utf-8")



file_path = os.path.join(conf_dir, "nmb.ini")
conf = HandleConfig(file_path)


# if __name__ == '__main__':
#     conf = HandleConfig("nmb.ini")
#     conf.get("log","name")

[log]
name = py30
level = INFO
file_ok = True
file_name = py30.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pythonlogging模块可以用来记录程序运行时的日志信息,包括调试信息、警告信息、错误信息等。为了方便使用,可以对logging模块进行封装,使其更容易调用和管理。 以下是一些可能有用的封装方法: 1. 封装基本配置:将logging模块的基本配置封装一个函数,可以方便地进行调用和修改。例如: ```python import logging def init_logger(log_file): logger = logging.getLogger() logger.setLevel(logging.DEBUG) handler = logging.FileHandler(log_file) formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) ``` 这个函数会初始化一个logger对象,并将其级别设置为DEBUG,将日志输出到指定的文件中,并使用指定的格式进行格式化。 2. 封装消息类型:可以定义不同的消息类型,例如debug、info、warning、error等,然后为每种类型都定义一个封装函数,以简化调用。例如: ```python import logging logger = logging.getLogger() def debug(msg): logger.debug(msg) def info(msg): logger.info(msg) def warning(msg): logger.warning(msg) def error(msg): logger.error(msg) ``` 这样,使用时可以直接调用对应的函数,例如: ```python debug('this is a debug message') warning('this is a warning message') ``` 3. 封装上下文信息:有时候需要在日志中添加一些上下文信息,例如当前时间、请求参数、用户ID等。可以定义一个上下文管理器,用with语句来管理上下文信息的输出。例如: ```python import logging logger = logging.getLogger() class LogContext: def __init__(self, **kwargs): self.kwargs = kwargs def __enter__(self): logger.info('start context', extra=self.kwargs) def __exit__(self, exc_type, exc_value, traceback): logger.info('end context', extra=self.kwargs) ``` 使用时可以这样调用: ```python with LogContext(user_id=123): logger.info('do something') ``` 这样会在日志中输出一条包含上下文信息的记录。 总之,封装logging模块可以帮助我们更方便地使用日志功能,提高开发效率和代码可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值