向跟踪日志添加跟踪ID

时间:2018-12-05 08:47:49

标签: python scrapy

按照此处的要求:https://github.com/scrapy/scrapy/issues/3466

我想在我的日志中添加一个跟踪ID。我的请求中存在此跟踪ID。但是我无法将其添加到我的拼凑日志中。我尝试了多种解决方案。

  1. 使用loggerAdapter创建我自己的记录器并添加跟踪ID。

    • 这有效,但仅适用于我个人编写的日志。此外,engine.py,middleware.py等生成的日志也会失败。

      Traceback (most recent call last):
      File "/usr/lib/python2.7/logging/__init__.py", line 861, in emit
          msg = self.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 734, in format
          return fmt.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 469, in format
          s = self._fmt % record.__dict__
      KeyError: 'trace_id'
      Logged from file middlewares.py, line 69
      Traceback (most recent call last):
      File "/usr/lib/python2.7/logging/__init__.py", line 861, in emit
          msg = self.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 734, in format
          return fmt.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 469, in format
          s = self._fmt % record.__dict__
      KeyError: 'trace_id'
      Logged from file redirect.py, line 41
      Traceback (most recent call last):
      File "/usr/lib/python2.7/logging/__init__.py", line 861, in emit
          msg = self.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 734, in format
          return fmt.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 469, in format
          s = self._fmt % record.__dict__
      KeyError: 'trace_id'
      Logged from file middlewares.py, line 69
      ^CTraceback (most recent call last):
      File "/usr/lib/python2.7/logging/__init__.py", line 861, in emit
          msg = self.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 734, in format
          return fmt.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 469, in format
          s = self._fmt % record.__dict__
      KeyError: 'trace_id'
      Logged from file crawler.py, line 258
      Traceback (most recent call last):
      File "/usr/lib/python2.7/logging/__init__.py", line 861, in emit
          msg = self.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 734, in format
          return fmt.format(record)
      File "/usr/lib/python2.7/logging/__init__.py", line 469, in format
          s = self._fmt % record.__dict__
      KeyError: 'trace_id'
      Logged from file engine.py, line 295
      
  2. 在LOG_FORMAT设置中添加了跟踪ID。但我找不到将这种说法传递给scrapy的方法。

    LOG_FORMAT = "%(asctime)s %(levelname)s [%(trace_id)s]: %(message)s"
    

我无法选择关闭日志记录。欢迎任何替代解决方案或改进

0 个答案:

没有答案