aboutsummaryrefslogblamecommitdiffstats
path: root/slack/log.py
blob: 4b8bbe11dd311e28062c0724aee6305ff1714c59 (plain) (tree)
1
2
3
4
5
6
7
8
9

                                  
                        
                      
 

              
                                                  
                               
 

                                              











                                                     
                                                                                 

 

                                           
                                                  


                                 

                                       

                                                                                 
from __future__ import annotations

from enum import IntEnum
from typing import Set

import weechat

from slack.error import store_and_format_exception
from slack.shared import shared

printed_exceptions: Set[BaseException] = set()


class LogLevel(IntEnum):
    TRACE = 1
    DEBUG = 2
    INFO = 3
    WARN = 4
    ERROR = 5
    FATAL = 6


# TODO: Figure out what to do with print_error vs log
def print_error(message: str):
    weechat.prnt("", f"{weechat.prefix('error')}{shared.SCRIPT_NAME}: {message}")


def print_exception_once(e: BaseException):
    if e not in printed_exceptions:
        print_error(store_and_format_exception(e))
        printed_exceptions.add(e)


def log(level: LogLevel, message: str):
    if level >= LogLevel.INFO:
        prefix = weechat.prefix("error") if level >= LogLevel.ERROR else "\t"
        weechat.prnt("", f"{prefix}{shared.SCRIPT_NAME} {level.name}: {message}")