Diretório de artigos
01 Uso básico
Os níveis de log de baixo para alto são: DEBUG
< INFO
< WARNING
< ERROR
< CRITICAL
O nível de log precisa ser definido antes do uso. Somente logs iguais a este nível de log serão registrados.
Por exemplo, se o nível de log estiver definido como WARNING
, somente os logs de três níveis WARNING
: , ERROR
e CRITICAL
serão registrados.
import logging
# 使用前需要先设置日志级别 这里设置的是DEBUG
logging.basicConfig(level=logging.DEBUG)
logging.debug("这是一个debug消息")
logging.info("这是一个info消息")
logging.warning("这是一个warning消息")
logging.error("这是一个error消息")
logging.critical("这是一个critical消息")
Ao executar este código, você pode ver a seguinte saída no console:
DEBUG:root:这是一个debug消息
INFO:root:这是一个info消息
WARNING:root:这是一个warning消息
ERROR:root:这是一个error消息
CRITICAL:root:这是一个critical消息
02 Formatação de registros
Você pode personalizar o formato de saída do log, consulte:
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s [%(levelname)s]: %(message)s",
datefmt="%Y-%m-%d %H:%M:%S"
)
03 Saída para arquivo
Por padrão, os logs são enviados para o console. Se quiser enviar o log para um arquivo, você pode configurá-lo assim:
logging.basicConfig(
filename='app.log',
level=logging.DEBUG,
format="%(asctime)s [%(levelname)s]: %(message)s"
)
04 Esfregue à mão um decorador de toras
Escreva à mão um decorador e pendure-o na função para realizar a entrada e saída da função de impressão.
Aqui está o código de referência:
import logging
from functools import wraps
# 定义日志级别和格式化
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
def return_log(func):
"""用于输出打印函数的返回值"""
@wraps(func)
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
logging.info(f"func <{
func.__name__}> return: {
result}")
return result
return wrapper
def args_log(func):
"""用于输出打印函数的传入参数"""
@wraps(func)
def wrapper(*args, **kwargs):
logging.info(f"func <{
func.__name__}> args: {
args}, kwargs: {
kwargs}")
return func(*args, **kwargs)
return wrapper