当前位置: 首页 > 科技观察

一份 Python 日志配置,同时适用于开发和生产环境

时间:2023-03-12 00:38:16 科技观察

一个Python日志配置,适用于开发和生产环境最常用的配置文件如下:log.pyimportloggingimportosimporttimelogger=logging.getLogger()ifnotos.path.exists("logs"):os.mkdir("日志")logger=logging.getLogger()logger.setLevel(logging.INFO)ch=logging.StreamHandler()fh=logging.FileHandler(filename=f"logs/log_{time.strftime('%Y%m%d')}.txt")格式化程序=日志记录。Formatter("%(asctime)s-%(module)s-%(funcName)s-line:%(lineno)d-%(levelname)s-%(message)s")formatter2=logging.Formatter("%(asctime)s-%(levelname)s-%(message)s")fh.setFormatter(formatter)ch.setFormatter(formatter2)logger.addHandler(ch)#输出日志到屏幕logger.addHandler(fh)#将日志输出到文件中。这样,在需要打印日志的地方,可以从log.py导入logger来使用:fromlogimportloggerlogger.info("info")logger.debug("debug")终端打印的信息是:2022-09-2106:24:26,036-INFO-info2022-09-2106:24:26,037-DEBUG-调试日志文件中的信息比较详细,如下:?catlog_20220921.txt2022-09-2106:24:26,036-demo3-<module>-line:3-INFO-info2022-09-2106:24:26,037-demo3--line:4-DEBUG-debug但每当我需要为不同的环境设置不同的日志级别时,这很不方便修改logger.setLevel(logging.INFO)。需要改进和添加配置文件,让同一套代码可以运行在不同的环境中。如果想让同一套代码同时运行在开发环境和生产环境,就需要借助配置文件,我们在配置文件中写日志级别,测试环境的配置文件是DEBUG,生产环境的级别是INFO,然后让log.py读取。配置文件最重要的方面是工具dotenv,这是一个第三方库。使用前请先pipinstallpython-dotenv进行安装,然后在项目目录下创建一个.env文件,写入内容:DEBUG=true然后就可以访问.env中的环境变量,像这样:fromdotenvimportload_dotenvimportosload_dotenv()print(os.getenv("DEBUG"))#true最后我们修改一下日志配置文件,使其适合开发和生产环境:ifnotos.path.exists("logs"):os.mkdir("logs")logger=logging.getLogger()ifos.getenv("DEBUG")=="true":#测试环境logger.setLevel(logging.DEBUG)else:#生产环境logger.setLevel(logging.INFO)ch=logging.StreamHandler()fh=logging.FileHandler(filename=f"logs/log_{time.strftime('%Y%m%d')}.txt")formatter=logging.Formatter("%(asctime)s-%(module)s-%(funcName)s-line:%(lineno)d-%(levelname)s-%(message)s")formatter2=logging.Formatter("%(asctime)s-%(levelname)s-%(message)s")fh.setFormatter(formatter)ch.setFormatter(formatter2)logger.addHandler(ch)#输出日志到屏幕logger.addHandler(fh)#将日志输出到文件即使没有.env文件,上面的代码也能正常运行,大家可以在自己的项目中参考