【问题标题】:Format Airflow logs in Json - Issue在 Json 中格式化 Airflow 日志 - 问题
【发布时间】:2021-01-25 18:51:39
【问题描述】:

按照Format Airflow Logs in JSON 和其中提到的指南,我将log_config 复制到了airflow/config 文件夹中。但是当我运行网络服务器或调度程序时,我得到“模块未定义”(init.py 在配置文件夹中定义)并且 PYTHONPATH 被设置为气流/配置

错误是

  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/airflow/logging_config.py", line 40, in configure_logging
    logging_config = import_string(logging_class_path)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/airflow/utils/module_loading.py", line 33, in import_string
    module = import_module(module_path)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'airflow.config'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/bin/airflow", line 25, in <module>
    from airflow.configuration import conf
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/airflow/__init__.py", line 47, in <module>
    settings.initialize()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/airflow/settings.py", line 374, in initialize
    LOGGING_CLASS_PATH = configure_logging()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/airflow/logging_config.py", line 52, in configure_logging
    'Unable to load custom logging from {} due to {}'.format(logging_class_path,err), isinstance('airflow',dict), isinstance('airflow.config',dict), type('airflow.config')
ImportError: ("Unable to load custom logging from airflow.config.log_config.LOGGING_CONFIG due to No module named 'airflow.config'",

现在它回来了, ImportError: Unable to load custom logging from airflow.config.log_config.LOGGING_CONFIG due to section/key [logging/logging_level] not found in config

【问题讨论】:

  • 我也遇到了同样的问题,你能解决吗?

标签: logging airflow airflow-scheduler


【解决方案1】:

如果你还没有弄清楚。 看起来加载logging_level 的代码正在寻找它位于airflow.cfg file 中名为logging 的部分中

但是,这个属性实际上默认位于core 部分下 因此,如果您将代码更改为 LOG_LEVEL: str = conf.get("core", "LOGGING_LEVEL").upper()
这应该为您解决,或者您可以在您的airflow.cfg 中添加另一个[logging] 部分。 (需要重新排序)

【讨论】:

    【解决方案2】:

    遵循与梅尼·伊萨科夫相同的答案:

    解决方案

    1. 转到您的文件airflow.cfg
    2. [core] 部分下方包含以下代码:
      [logging]
      logging_config_class = log_config.DEFAULT_LOGGING_CONFIG
      
    3. 重新启动调度程序

    问题原因: 文件airflow.cfg 缺少名为[logging] 的部分。

    了解问题

    在调度程序启动时,它访问airflow.cfg 中的[core] 部分并搜索日志记录路径。

    并且日志将存储在哪里的信息可以在logging_config_class参数中找到。

    但是,即使我们将logging_config_class = log_config.DEFAULT_LOGGING_CONFIG 放在[core] 部分,调度程序也不会工作。

    为什么?这是因为log_config.py 日志处理程序与airflow.cfg 之间存在不匹配。

    log_config.py 的日志处理程序中,他们有以下conf.get 来获取日志配置:

    LOG_LEVEL: str = conf.get('logging', 'LOGGING_LEVEL').upper()  
    LOG_FORMAT: str = conf.get('logging', 'LOG_FORMAT')
    

    第一个参数是airflow.cfg文件中将被扫描的section,但默认情况下airflow.cfg文件中没有名为[logging]的section,这会导致调度器初始化出现以下错误:

    ImportError: Unable to load custom logging from log_config.DEFAULT_LOGGING_CONFIG due to section/key [logging/fab_logging_level] not found in config

    【讨论】:

    • 这是这个问题的最佳答案,我在这个问题上花了大约3个小时,感觉很愚蠢。
    猜你喜欢
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多