java - 如何在 Python 中的一处定义日志记录?

标签 java python python-3.x python-logging

我是Python新手,我想在Python中在一处定义以下日志记录代码,以便它可以在其他Python文件(类或非类)中使用。对于Java,我们使用log4j或slf4j作为jar文件的一部分,我们简单地定义为Logger logger = Logger.getLogger("class name"),我想要完全像这样实现,这样我就可以在任何 python 模块中使用记录器。目前我在所有类中定义配置。

import logging
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s",
    handlers=[
        logging.FileHandler("debug.log"),
        logging.StreamHandler()
    ]
)

我也浏览过这个SO链接Using logging in multiple modules

还请为具有更多 python 文件的中型到大型项目建议最推荐的方法。

最佳答案

根据此链接https://fangpenlin.com/posts/2012/08/26/good-logging-practice-in-python/ ,作者提到了一个更好的做法。可能有更好的推荐方法。 您必须按以下方式进行。

  1. 按照链接中所述定义 logging.json 文件。
  2. 定义一个名为 LogSetup.py 的 Python 文件并添加到代码下方。
def setup_logging(default_path='logging.json', default_level=logging.DEBUG, env_key='LOG_CFG'):
    """Setup logging configuration"""
    path = default_path
    value = os.getenv(env_key, None)
    if value:
        path = value
    if os.path.exists(path):
        with open(path, 'rt') as f:
            config = json.load(f)
        logging.config.dictConfig(config)
    else:
        logging.basicConfig(level=default_level)
  • 在 main 方法中像 LogSetup.setup_logging() 一样调用上面的文件。 我在下面提供了代码片段。
  • logger =logging.getLogger(名称)

    if __name__ == '__main__':
        LogSetup.setup_logging()
        logger.debug("This is a debug message ...")
    

    这对我来说看起来不错,其他人可能会推荐更好的方法。

    关于java - 如何在 Python 中的一处定义日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60231863/

    相关文章:

    java - 在 android 11 上将文件保存在 sd 卡上

    java - 由于 SeekBar 元素,Android 强制关闭

    python - 如何对多个可能的参数类型使用字符串文字类型注释?

    Python/Django - 如何创建仅允许字母和空格的正则表达式(RegexValidator)?

    python - SoundCloud API - 播放次数小于实际次数

    python - Google colab 文件下载失败获取错误

    java - ControlsFx 电子表格 View 范围

    java - MIFARE 卡 1k 是否可以锁定命令、保护克隆或无法被其他应用程序删除

    python - Pandas 替换 DataFrame 中的第一个结果

    python - 将多个列表数据转换为字典