#2251 A couple of logging changes for keygen
Merged 2 years ago by praiskup. Opened 2 years ago by frostyx.
copr/ frostyx/copr keygen-logging  into  main

@@ -6,8 +6,6 @@ 

  

  import json

  import logging

- from logging import getLogger

- from logging import FileHandler

  

  from flask import Flask, request, Response

  import os
@@ -21,27 +19,36 @@ 

  

  

  # setup logger

+ class RemoteAddrFilter(logging.Filter):

+     """

+     Define `%(remote_addr)s` key for the formatter string

+     """

+ 

+     def filter(self, record):

+         record.remote_addr = request.remote_addr if request else "SERVER"

+         return True

+ 

+ 

  if not app.config["DEBUG"] or app.config["DEBUG_WITH_LOG"]:

      filename = os.path.join(app.config["LOG_DIR"], "main.log")

      if os.path.exists(app.config["LOG_DIR"]):

-         handler = FileHandler(filename)

+         handler = logging.FileHandler(filename)

          handler.setLevel(app.config["LOG_LEVEL"])

          handler.setFormatter(logging.Formatter(

              '%(asctime)s %(levelname)s'

-             '[%(module)s:%(pathname)s:%(lineno)d]'

+             '[%(module)s:%(pathname)s:%(lineno)d][%(remote_addr)s]'

              ': %(message)s '

          ))

-         logger = getLogger(__name__)

-         logger.addHandler(handler)

-         logger.setLevel(app.config["LOG_LEVEL"])

+         handler.addFilter(RemoteAddrFilter())

+         app.logger.addHandler(handler)

  

+     app.logger.setLevel(app.config["LOG_LEVEL"])

+     app.logger.addFilter(RemoteAddrFilter())

  # end setup logger

  

  

  from .logic import create_new_key, user_exists, get_passphrase_location

  

- log = logging.getLogger(__name__)

- 

  

  @app.route('/ping')

  def ping():
@@ -50,7 +57,7 @@ 

  

      :status 200: server alive

      """

-     log.debug("got ping")

+     app.logger.debug("got ping")

      return Response("pong\n", content_type="text/plain;charset=UTF-8")

  

  
@@ -91,7 +98,7 @@ 

      except Exception as e:

          raise BadRequestException("Failed to parse request body: {}".format(e))

  

-     log.info("received gen_key query: {}".format(query))

+     app.logger.info("received gen_key query: {}".format(query))

      if "name_real" not in query:

          raise BadRequestException("Request query missing required "

                                    "parameter `name_real`".format(query))
@@ -123,12 +130,6 @@ 

  

  

  @app.errorhandler(500)

- def handle_invalid_usage(error):

-     response = Response(error.msg, content_type="text/plain;charset=UTF-8")

-     response.status_code = error.status_code

-     response.data = str(error)

-     return response

- 

  @app.errorhandler(KeygenServiceBaseException)

  def handle_invalid_usage(error):

      response = Response(error.msg, content_type="text/plain;charset=UTF-8")

@@ -0,0 +1,14 @@ 

+ from unittest import TestCase

+ from copr_keygen import app

+ 

+ 

+ class TestRemoteAddrFilter(TestCase):

+     def test_server(self):

+         with self.assertLogs(app.logger) as cm:

+             app.logger.info("foo")

+             assert cm.records[0].remote_addr == "SERVER"

+ 

+     def test_backend(self):

+         with self.assertLogs(app.logger, level="DEBUG") as cm:

+             app.test_client().get("/ping")

+             assert cm.records[0].remote_addr == "127.0.0.1"

Please see commit descriptions.

Build succeeded.

rebased onto a4cbb5c

2 years ago

Commit 47fa3cd fixes this pull-request

Pull-Request has been merged by praiskup

2 years ago

Commit 58c0ed4 fixes this pull-request

Pull-Request has been merged by praiskup

2 years ago

Commit f6db0f9 fixes this pull-request

Pull-Request has been merged by praiskup

2 years ago

Build succeeded.