Java 如何在Python中一处定义日志记录?

Java 如何在Python中一处定义日志记录?,java,python,python-3.x,python-logging,Java,Python,Python 3.x,Python Logging,我是新Python,我想在一个地方用Python定义以下日志代码,以便它可以在其他Python文件(类或非类)中使用。对于Java,我们使用log4j或slf4j作为jar文件的一部分,我们只需定义为Logger Logger=Logger.getLogger(“类名”),我希望实现与此完全相同的效果,以便我可以在任何python模块中使用loger。目前,我在所有类中定义了配置 导入日志 logging.basicConfig( 级别=logging.INFO, format=“%(ascti

我是新Python,我想在一个地方用Python定义以下日志代码,以便它可以在其他Python文件(类或非类)中使用。对于Java,我们使用log4j或slf4j作为jar文件的一部分,我们只需定义为
Logger Logger=Logger.getLogger(“类名”)
,我希望实现与此完全相同的效果,以便我可以在任何python模块中使用loger。目前,我在所有类中定义了配置

导入日志
logging.basicConfig(
级别=logging.INFO,
format=“%(asctime)s[%(levelname)s](消息)s”,
处理者=[
logging.FileHandler(“debug.log”),
logging.StreamHandler()
]
)
我也通过了这个SO链接


另外,对于具有更多python文件的中大型项目,请建议最推荐的方法。

使日志处理程序随处可用的一个选项是:

a、 py:

b、 py:

输出:

2020-02-14 20:18:17,549 a.py [INFO] module a!
2020-02-14 20:18:17,550 b.py [INFO] This is from module b.py
2020-02-14 20:18:17,550 b.py [INFO] Log message from b.foo()
根据这个链接,作者提到了一个更好的实践。可能有更好的推荐方法。 你必须按以下方式做

  • 定义链接中提到的
    logging.json
    文件
  • 定义一个名为
    LogSetup.py
    的python文件,并将其添加到代码下面
  • 在main方法中像这样调用上述文件
    LogSetup.setup\u logging()
    。 我在下面提供代码片段
  • logger=logging.getLogger(name


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

    先生,我可以这样做,但我需要最好的方法来做。你提到的问题的答案有什么问题吗?先生,我想要一个共同的地方,这样我就可以简单地使用
    logger=logging.getLogger(\uu name\uuuuu)
    logger.debug(“某物”)
    。目前我在所有文件中定义。
    logger.info(msg='This is from module b.py')
    
    def foo():
        logger.info('Log message from b.foo()')
    
    foo()
    
    2020-02-14 20:18:17,549 a.py [INFO] module a!
    2020-02-14 20:18:17,550 b.py [INFO] This is from module b.py
    2020-02-14 20:18:17,550 b.py [INFO] Log message from b.foo()
    
    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)
    
    if __name__ == '__main__':
        LogSetup.setup_logging()
        logger.debug("This is a debug message ...")