我試圖創建將無需外部包着色基本記錄器,如何獲取當前日誌級別的Python記錄模塊
# these have to be the first functions so I can use it in the logger settings
def create_log_name(log_path="{}/log", filename="zeus-log-{}.log"):
if not os.path.exists(log_path.format(os.getcwd())):
os.mkdir(log_path.format(os.getcwd()))
find_file_amount = len(os.listdir(log_path.format(os.getcwd())))
full_log_path = "{}/{}".format(log_path.format(os.getcwd()), filename.format(find_file_amount + 1))
return full_log_path
def set_color_value(levelname):
log_set = {
"INFO": "\033[92m{}\033[0m",
"WARNING": "\033[93m{}\033[0m",
"DEBUG": "\033[94m{}\033[0m",
"ERROR": "\033[91m{}\033[0m",
"CRITICAL": "\033[91m{}\033[0m"
}
return log_set[levelname].format(levelname)
logger = logging.getLogger("zeus-log")
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler(
filename=create_log_name(), mode="a+"
)
file_handler.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
file_format = logging.Formatter(
'%(asctime)s;%(name)s;%(levelname)s;%(message)s'
)
console_format = logging.Formatter(
"[%(asctime)s {}] %(message)s".format(set_color_value()), "%H:%M:%S"
)
file_handler.setFormatter(file_format)
console_handler.setFormatter(console_format)
logger.addHandler(console_handler)
logger.addHandler(file_handler)
所以截至目前,所有我需要做的是獲得將在logging.Formatter
設置當前日誌級別,並將其發送給我的小功能:
console_format = logging.Formatter(
"[%(asctime)s {}] %(message)s".format(set_color_value()), "%H:%M:%S"
)
是否有可能得到logging包當前日誌級別?
例如,可以說我通過logger.INFO("test")
我需要一種方法來獲取INFO
部分作爲一個字符串,從那裏,set_color_value("INFO")
應該返回:
不這只是表明當前記錄器設置的級別至?我需要一種方法來獲取從記錄器傳遞的每個字符串的日誌記錄信息,例如,可以說我通過'logger.FATAL(「test」)'我需要那個'FATAL'部分作爲字符串傳遞 – wahwahwah
此答案回答這個問題問了什麼。自從我到達這裏尋找答案以來,您的問題需要改進。 –
**同意**您的問題的內容與您的問題的標題@wahwahwah不一致。後者可能對StackOverflowers(包括我自己)更感興趣。它*非常不正交,因爲'logging' API定義了'setLevel()'和'getEffectiveLevel()'方法,但是沒有*'getLevel()'方法,當它們可以簡單地定義一個簡單的'getLevel ):返回self.level'方法。 '' –