首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Loguru设置,用于bash脚本,用于多个Python脚本

Loguru设置,用于bash脚本,用于多个Python脚本
EN

Stack Overflow用户
提问于 2021-09-22 21:04:23
回答 1查看 167关注 0票数 2

我有一个通过Bash脚本运行一系列Python脚本的程序。我在Python脚本中使用罗古鲁,并通过单独的logger_setup.py设置日志文件。这很好,但是我需要通过exec在每个Python中实现设置,这对于重构变得非常麻烦,例如当Python脚本被移动到子文件夹时。

是否有一种方法可以在bash脚本中运行一次记录器设置,并被所有后续对Python的调用所识别?

最小工作示例

my_bash_script.sh

代码语言:javascript
复制
#!/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.py

my_python_script.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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",
    )

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-09-22 21:26:19

正如注释中已经指出的那样,您不能为此目的使用bash (好的,您可以使用安装文件并将其与脚本合并为将被执行的临时文件,但在我看来,这将是一个奇怪的解决方案)。

我认为重用用于日志设置的代码的唯一方法是将logger_setup.py视为一个库:

代码语言:javascript
复制
#!/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:

代码语言:javascript
复制
#!/usr/bin/env python3

from logger_setup import loguru_setup

logger = loguru_setup()
logger.info(f"Here I am writing to log.")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69291264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档