Python Forum
Custom logging handler looping continuously
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Custom logging handler looping continuously
#1
Hi all,

I'm running into some sort of looping issue attempting to implement logging in my project using a custom handler so I'm seeking for help. I do have some programming experience but I'm pretty new to python so maybe I get this all wrong Confused

As shown below, I get a "RecursionError". I've also attached a copy of my code at the end of this post.

Thanks in advance !

Error:
Traceback (most recent call last): File "app.py", line 18, in <module> logger.debug('debug message!') File "/usr/lib/python3.8/logging/__init__.py", line 1422, in debug self._log(DEBUG, msg, args, **kwargs) File "/usr/lib/python3.8/logging/__init__.py", line 1577, in _log self.handle(record) File "/usr/lib/python3.8/logging/__init__.py", line 1587, in handle self.callHandlers(record) File "/usr/lib/python3.8/logging/__init__.py", line 1649, in callHandlers hdlr.handle(record) File "/usr/lib/python3.8/logging/__init__.py", line 950, in handle self.emit(record) File "/app/python/logger_handlers.py", line 27, in emit requests.post(self.url, headers = header, data = json.dumps(payload)) [...truncated...] RecursionError: maximum recursion depth exceeded in comparison
# app.py
import logging
import my_module
from logger_handlers import CustomHandler

logging.getLogger("requests").disabled = True

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# Custom handler
custom_handler = CustomHandler(url = 'http://some_url.com/api/1/log')
custom_handler.setLevel(logging.DEBUG)
custom_handler.setFormatter(formatter)
logger.addHandler(custom_handler)

# Log to root handler
logger.debug('debug message!')

# Run a function in a different module that also has a logger defined 
my_module.run()
# my_module.py
import logging

log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())

def run():
    log.debug('A message from A Module')
import logging
import requests
import json

from socket import gethostname, gethostbyname

class CustomHandler(logging.Handler):

    def __init__(self, *args, **kwargs):
        super().__init__()
        self.url = kwargs['url']

    def emit(self, record):
        message = self.format(record)
        header = {"content-type": "application/json"}
        payload = {
            "token":None,
            "client_version":"",
            "parameters": {
                "source": "Host: {} ({}), Module: {}, {}".format(gethostname(), gethostbyname(gethostname()), record.filename, record.funcName),
                "severity": record.levelname,
                "message": message
            }
        }
        requests.post(self.url, headers = header, data = json.dumps(payload))
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to use asyncio run_forever to continuously handle requests mansky 1 602 Oct-28-2023, 04:26 AM
Last Post: deanhystad
  How to continuously receive messages until specified to stop using Bleak jacobbreen25 3 2,018 Dec-28-2022, 04:25 PM
Last Post: jacobbreen25
  error handler appears to be turned off. How do I turn it back on? jpotter0 0 565 Nov-26-2022, 11:44 AM
Last Post: jpotter0
  how to get process handler? maiya 1 1,658 Feb-23-2021, 07:34 AM
Last Post: maiya
  how to create my own custom logging message maiya 4 2,301 Jul-15-2020, 05:42 PM
Last Post: maiya
  Create exception handler oradba4u 7 3,027 May-23-2020, 03:25 AM
Last Post: oradba4u
  Continuously iterating through a csv file ExplodingCoyote 2 3,607 Feb-26-2020, 07:56 AM
Last Post: DeaD_EyE
  How to Continuously Remove Letters from Words ZQ12 1 2,527 Nov-23-2019, 05:31 PM
Last Post: perfringo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020