我有一个通过Bash脚本运行一系列Python脚本的程序。我在Python脚本中使用罗古鲁,并通过单独的logger_setup.py设置日志文件。这很好,但是我需要通过exec在每个Python中实现设置,这对于重构变得非常麻烦,例如当Python脚本被移动到子文件夹时。
是否有一种方法可以在bash脚本中运行一次记录器设置,并被所有后续对Python的调用所识别?
最小工作示例
my_bash_script.sh
#!/bin/bash
rm alt_logger.log
# python logger_setup.py # <-- this is the desired step, but does not work
python my_python_script.py
python another_python_script.pymy_python_script.py
from loguru import logger
exec(open("logger_setup.py").read()) # <-- I want to remove this
logger.info(f"Here I am writing to log.")another_python_script.py
from loguru import logger
exec(open("logger_setup.py").read()) # <-- I want to remove this
logger.info(f"Another message to log.")logger_setup.py
from loguru import logger
if __name__ == "__main__":
log_file = "alt_logger.log"
print(f"Setting up logger to stream to {log_file}")
logger.remove()
logger.add(
log_file,
colorize=True,
format="message}",
level="INFO",
)谢谢你的帮助!
发布于 2021-09-22 21:26:19
正如注释中已经指出的那样,您不能为此目的使用bash (好的,您可以使用安装文件并将其与脚本合并为将被执行的临时文件,但在我看来,这将是一个奇怪的解决方案)。
我认为重用用于日志设置的代码的唯一方法是将logger_setup.py视为一个库:
#!/usr/bin/env python3
from loguru import logger
def loguru_setup(logfile = "alt_logger.log"):
logger.remove()
logger.add(
logfile,
colorize=True,
format="{message}",
level="INFO",
)
return logger并在每个脚本中加载这个库:
my_python_script.py:
#!/usr/bin/env python3
from logger_setup import loguru_setup
logger = loguru_setup()
logger.info(f"Here I am writing to log.")https://stackoverflow.com/questions/69291264
复制相似问题