How to catch logger.warning()

 

일반적으로 Exception을 상속받는 class들을 try, except문을 통해 처리해준다.
보통 warning에 대한 처리는 warnings.filterwarnings('error')를 사용하지만 특정 logger에 대하여 logger.warning()을 호출하는 경우도 catch하고 싶은 경우, 함수를 변경하면 이들 역시 try, except문으로 잡아낼 수 있다.
물론, 직접 함수를 변경하는 방식은 얼마든지 다른 곳에서도 응용이 가능하다.

1
2
3
4
5
6
7
8
def warning(msg, *args, **kwargs):
  raise Warning(msg % args)
logging.getLogger('distributed.client').warning = warning

try:
  ...
except Warning as e:
  print("[Warning]:", e)