在python中实现多用途记录器的最佳实践是什么?

在python中实现多用途记录器的最佳实践是什么?,python,logging,Python,Logging,在我正在构建的应用程序(在一个包中)中,我有两个要从中登录的模块,每个模块都指向一个不同的文件和一个通用流处理程序 我想知道最佳实践是什么: 为每个模块分配不同的记录器,并为每个记录器分配每个模块的FileHandler 或: 只有根记录器和应用程序中的所有处理程序,并在每个处理程序中使用记录器的名称(这将是模块的名称)进行筛选 以下是我的代码,其中我有多个记录器: 日志记录\u配置={ “版本”:1, “禁用现有日志记录器”:False, “伐木工人”:{ '':{#根记录器 'handler

在我正在构建的应用程序(在一个包中)中,我有两个要从中登录的模块,每个模块都指向一个不同的文件和一个通用流处理程序

我想知道最佳实践是什么:

  • 为每个模块分配不同的记录器,并为每个记录器分配每个模块的FileHandler
  • 或:

  • 只有根记录器和应用程序中的所有处理程序,并在每个处理程序中使用记录器的名称(这将是模块的名称)进行筛选
  • 以下是我的代码,其中我有多个记录器:

    日志记录\u配置={
    “版本”:1,
    “禁用现有日志记录器”:False,
    “伐木工人”:{
    '':{#根记录器
    'handlers':['stream_handler'],
    “级别”:“信息”
    },
    “应用程序”:{
    “处理程序”:[“应用程序文件处理程序”],
    “级别”:“信息”
    },
    “路线”:{
    “处理程序”:[“路由文件处理程序”],
    “级别”:“信息”
    }
    },
    “处理程序”:{
    “流处理程序”:{
    “级别”:“警告”,
    “格式化程序”:“标准”,
    “类”:“logging.StreamHandler”
    },
    “应用程序文件处理程序”:{
    “级别”:“调试”,
    “格式化程序”:“标准”,
    'class':'logging.FileHandler',
    “文件名”:日志\u文件夹/“app.log”
    },
    “路由文件处理程序”:{
    “级别”:“调试”,
    “格式化程序”:“标准”,
    'class':'logging.FileHandler',
    “文件名”:日志\u文件夹/“routes.log”
    }
    },
    “格式化程序”:{
    “标准”:{
    “格式”:“%(asctime)s-%(名称)s-%(levelname)s:%(消息)s”,
    “datefmt”:“%Y-%m-%d%H:%m:%S”
    }
    }
    }
    
    下面是我仅使用根记录器并为每个处理程序分配过滤器的代码:

    日志记录\u配置={
    “版本”:1,
    “禁用现有日志记录器”:False,
    “伐木工人”:{
    '':{#根记录器
    'handlers':['stream_handler',
    “应用程序文件处理程序”,
    “路由文件处理程序”,
    “路由\u流\u处理程序”],
    “级别”:“信息”
    }
    },
    “处理程序”:{
    “流处理程序”:{
    “级别”:“警告”,
    “格式化程序”:“标准”,
    “类”:“logging.StreamHandler”
    },
    “应用程序文件处理程序”:{
    “级别”:“调试”,
    “格式化程序”:“标准”,
    'class':'logging.FileHandler',
    “文件名”:日志\u文件夹/“app.log”,
    “过滤器”:[“应用程序过滤器”]
    },
    “路由文件处理程序”:{
    “级别”:“调试”,
    “格式化程序”:“标准”,
    'class':'logging.FileHandler',
    “文件名”:日志\u文件夹/“routes.log”,
    '过滤器':['routes_filter']
    },
    “路由\u流\u处理程序”:{
    “级别”:“调试”,
    “格式化程序”:“标准”,
    'class':'logging.StreamHandler',
    '过滤器':['routes_filter']
    }
    },
    “过滤器”:{
    “应用程序过滤器”:{
    'class':'logging.Filter',
    “名称”:“应用程序”
    },
    “路由过滤器”:{
    'class':'logging.Filter',
    “名称”:“路由”
    }
    },
    “格式化程序”:{
    “标准”:{
    “格式”:“%(asctime)s-%(名称)s-%(levelname)s:%(消息)s”,
    “datefmt”:“%Y-%m-%d%H:%m:%S”
    }
    }
    }