I wrote MyClass
which i'm using inside of DRF ViewSet "create" method. In this class i declared new logger with _set_logger method. The problem is that django duplicates MyClass
logs, which I don't want:
MyClass
_set_logger method:
import logging
class MyClass:
def _set_logger(self) -> None:
self.log = logging.getLogger('logger_name')
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR)
formatter = logging.Formatter(
"%(name)s | %(levelname)s | %(funcName)s | %(message)s"
)
sh.setFormatter(formatter)
self.log.addHandler(sh)
The way i'm using MyClass
in ViewSet "create" method:
class SomeViewSet(ModelViewSet):
def create(self, request, *args, **kwargs):
obj = MyClass()
obj.do_something(request)
return super().create(request, *args, **kwargs)
Logs:
# my logs
logger_name | funcName | CRITICAL | error_msg
# django logs
CRITICAL 2023-08-17 00:10:44,138 module_name 11 140294782023360 error_msg
I tried changing logger_name to __name__
, expecting django and MyClass to use the same logger, but that didn't happen.
class MyClass:
def _set_logger(self) -> None:
self.log = logging.getLogger(__name__)