File: Logger.py

package info (click to toggle)
macs 3.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 378,732 kB
  • sloc: ansic: 5,879; python: 4,342; sh: 451; makefile: 86
file content (31 lines) | stat: -rw-r--r-- 1,079 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Logger.py to set time and memory monitoring to logging
import logging
import resource
import time
import os
import sys

class MemoryLogger(logging.Logger):
    def __init__(self, name, level=logging.NOTSET):
        super().__init__(name, level)
    
    def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False):
        mem_usage = self.get_memory_usage()
        super()._log(level, f"[{mem_usage} MB] {msg}", args, exc_info, extra, stack_info)

    @staticmethod
    def get_memory_usage():
        mem_usage = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
        if os.name == 'posix' and os.uname().sysname == 'Darwin':
            # macOS
            mem_usage = mem_usage / 1024  # Convert to kilobytes
        return int( mem_usage / 1024 ) # Convert to MB

logging.basicConfig(level=20,
                    format='%(levelname)-5s @ %(asctime)s: %(message)s ',
                    datefmt='%d %b %Y %H:%M:%S',
                    stream=sys.stderr,
                    filemode="w"
                    )

logging.setLoggerClass(MemoryLogger)