molior icon indicating copy to clipboard operation
molior copied to clipboard

Improve logging by showing logged in user that triggers an API

Open lbolla opened this issue 2 years ago • 3 comments

When debugging, it's useful to know which API calls are triggered manually by logged in users.

lbolla avatar Oct 05 '21 08:10 lbolla

@neolynx What do you think of changing cirrina logging format to emit something like this?

Oct 05 13:21:37 molior-test molior[50645]: [admin] 127.0.0.1 GET /api/status 200 in 0.007639s
Oct 05 13:21:38 molior-test molior[50645]: [admin] 127.0.0.1 GET /api/users 200 in 0.004822s
Oct 05 13:21:38 molior-test molior[50645]: [admin] 127.0.0.1 GET /api/nodes 200 in 0.001323s
Oct 05 13:21:39 molior-test molior[50645]: [admin] 127.0.0.1 GET /api2/repositories 200 in 0.005186s
Oct 05 13:21:39 molior-test molior[50645]: [admin] 127.0.0.1 GET /api/mirror 200 in 0.038432s

Note the "[admin]" logged in user.

The code to do that would be something like:

from aiohttp.abc import AbstractAccessLogger 
 
class AccessLogger(AbstractAccessLogger): 
 
    def _get_username(self, request): 
        try: 
            return request.cirrina.web_session.get('username') 
        except Exception: 
            return None 
 
    def log(self, request, response, time): 
        username = self._get_username(request) 
        self.logger.info( 
                f'[{username}] ' 
                f'{request.remote} ' 
                f'{request.method} {request.path} {response.status} ' 
                f'in {time:.6f}s') 

and then use it as:

       self.srv = await self.loop.create_server(
            self.app.make_handler(
                access_log_class=AccessLogger,
                access_log_format='%r %s',
                access_log=self.logger,
                logger=self.logger),

We could also improve cirrina to accept an access_log_class and pass it in from Molior.

lbolla avatar Oct 05 '21 13:10 lbolla

I've submitted a PR to cirrina to enable such loggers. https://github.com/neolynx/cirrina/pull/33

lbolla avatar Oct 06 '21 10:10 lbolla

PR submitted: https://github.com/molior-dbs/molior/pull/34

Please review!

lbolla avatar Jan 04 '22 13:01 lbolla