跳转至

FunnyLog

一个简单易用、功能强大的日志工具。

只需要加一个装饰器,就能自动日志输出类里面所有的方法的功能说明。


Documentation: https://linuxdeepin.github.io/funnylog

Source Code: https://github.com/linuxdeepin/funnylog


安装

pip install funnylog

使用方法

1、自动输出日志

#!/usr/bin/env python3
# _*_ coding:utf-8 _*_

# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.

# SPDX-License-Identifier: Apache Software License
from funnylog import logger
from funnylog import log
from funnylog.conf import setting

setting.CLASS_NAME_ENDSWITH = ("Log",)
logger("DEBUG")


class BaseLog:

    def base_self_method(self):
        """我是 基类 里面的实例方法"""

    @classmethod
    def base_cls_method(self):
        """我是 基类 里面的类方法"""

    @staticmethod
    def base_static_method():
        """我是 基类 里面的静态方法"""

# 注意这里,只需要在这里挂一个装饰器
@log
class TestLog(BaseLog):
    """继承了基类BaseLog"""

    def self_method(self):
        """我是 类 里面的实例方法"""

    @classmethod
    def cls_method(self):
        """我是 类 里面的类方法"""

    @staticmethod
    def static_method():
        """我是 类 里面的静态方法"""


if __name__ == '__main__':
    # @log装饰器自动打印
    TestLog().self_method()
    TestLog().cls_method()
    TestLog().static_method()
    # 直接调用基类里面的方法,也能自动打印
    TestLog().base_self_method()
    TestLog().base_cls_method()
    TestLog().base_static_method()

终端输出:

2、方法中输出其他的日志

#!/usr/bin/env python3
# _*_ coding:utf-8 _*_

# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.

# SPDX-License-Identifier: Apache Software License
from funnylog import logger
from funnylog import log
from funnylog.conf import setting

setting.CLASS_NAME_ENDSWITH = ("Log",)
logger("DEBUG")


class BaseLog:
    ...

# 注意这里,只需要在这里挂一个装饰器
@log
class TestLog(BaseLog):
    """继承了基类BaseLog"""
    ...

    @staticmethod
    def static_method():
        """我是 类 里面的静态方法"""

        # 方法里面仍然可以单独打印日志
        logger.debug("这是我想再输出的其他 debug 日志")
        logger.info("这是我想再输出的其他 info 日志")
        logger.error("这是我想再输出的其他 error 日志")


if __name__ == '__main__':
    # @log装饰器自动打印
    TestLog().static_method()

终端输出:

3、在外层其他直接使用

#!/usr/bin/env python3
# _*_ coding:utf-8 _*_

# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.

# SPDX-License-Identifier: Apache Software License
from funnylog import logger
from funnylog import log
from funnylog.conf import setting

setting.CLASS_NAME_ENDSWITH = ("Log",)
logger("DEBUG")


class BaseLog:
    ...

# 注意这里,只需要在这里挂一个装饰器
@log
class TestLog(BaseLog):
    """继承了基类BaseLog"""
    ...


if __name__ == '__main__':
    # logger直接调用
    logger.debug("这是在类外面打 debug log")
    logger.info("这是在类外面打 info log")
    logger.error("这是在类外面打 error log")

终端输出:

必要配置项

  • LOG_FILE_PATH 日志文件的生成路径;

默认是在:/tmp/_logs,你可以配置为其他位置;

from funnylog.conf import setting

setting.LOG_FILE_PATH = "/home/user/xxx"
  • LOG_LEVEL日志级别;

默认日志输出级别为 DEBUG 级别,同样可以进行配置修改;

from funnylog.conf import setting

setting.LOG_LEVEL = "INFO"
  • 自动输出日志的类名称;(tuple)

  • CLASS_NAME_STARTSWITH 类名以什么开头;

    from funnylog.conf import setting
    
    setting.CLASS_NAME_STARTSWITH = ("Test",) 
    # 注意给元组类型
    
  • CLASS_NAME_ENDSWITH 类名以什么结尾;

  • CLASS_NAME_CONTAIN 类名包含什么字符;