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
类名包含什么字符;