módulo de registro
- Função: Fornecer um meio flexível para que os aplicativos registrem erros de tempo, avisos e informações de depuração. Simplificando, ele fornece um nível diferenciado de arquivos de log de execução do aplicativo para o processo de execução de todo o aplicativo .
- Instruções:
- registro de importação
- A configuração básica de todo o módulo (objeto): logging.basicConfig ()
- Crie um objeto logger:
- 创建 : logger = logging.getLogger ( name )
- Convenção de nomenclatura: o nome deve ser o nome do aplicativo, tanto quanto possível
- Envie mensagens de registro para o console :
- logger.info (“Iniciar registro de impressão”)
- logger.debug (“Faça algo”)
- logger.warning (“Algo pode falhar.”)
- logger.error (“Concluir”)
- logger.critical ('hah')
- Filtrar por mensagens de registro
- logger.setLevel (level): configuração de nível
- logger.isEnabledFor (nível): Determine se deseja processar mensagens deste nível
- Adicionar filtro, remover filtro; filtro de objeto, o filtro embutido é Filtro (o filtro personalizado pode ser herdado por classe).
- Gravador hierárquico e controle de propagação de mensagem (propagação padrão)
- Processador de mensagens de log
- Módulo de processador integrado: consulte o link abaixo para obter detalhes
- Configuração do processador: configuração de nível, adição e remoção de processadores
- Limpeza e desligamento do processador
- Formatação de mensagens de log
- Criar objeto Formatter
- Adicione o objeto ao processador
- Adicione o processador ao registro de mensagens
- Como adicionar informações adicionais contextuais
- Adiciona automaticamente extra = () após a mensagem do método de registro de envio
- Use o wrapper logAdapter. Recomenda-se adicionar este método de forma flexível e automática
- Função útil
- Veja a conexão principal:
Código
'''
logging模块作用:为应用程序提供灵活的手段记录事件、错误、警告、调试信息;
对信息进行收集、筛选、写入文件,发送系统日志,甚至可以同步发送给远程计算机
'''
'''
日志记录级别:
CRUTICAL、ERROR、WARNING、INFO、DEBUG、NOTSET
'''
# 网上案列____发出日志消息
import logging
# 基本配置语句
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#
logger = logging.getLogger('a')
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")
# 案列1___发出日志消息
import Hello
import logging
# 下面语句为特殊对象基本配置语句,接受关键字参数,根记录器。具体参数见书P287
logging.basicConfig(
filename= 'app.log',
format= '%(levelname)-10s %(asctime)s %(message)s',
level= logging.INFO
)
log = logging.getLogger('app')
# 关键字对,字典插入尝试
parms = {
'host' : 'www.python.org',
'port' : 80
}
log.critical("Can't connect to %(host)s at port %(port)d", parms)
'''
其它发送日志信息的方法:看书
log.exception()
log.log()
log.findCaller()
'''
# 得到一个logger对象
logger = logging.getLogger(__name__)
# 设置logger内置对象级别
logger.setLevel(level = logging.INFO)
# 调用内置处理器,将消息日志写入文件,只有处理器不能运行
handler = logging.FileHandler("app.log")
# 为处理器设置日志消息级别
handler.setLevel(logging.INFO)
# 日志消息格式化信息
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 设置处理器格式化信息
handler.setFormatter(formatter)
# 为对象增加处理器
logger.addHandler(handler)
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
console = logging.StreamHandler()
console.setLevel(logging.INFO)
logger.addHandler(handler)
logger.addHandler(console)
logger.info("Start print log2")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")
from logging.handlers import RotatingFileHandler
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
#定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大1K
rHandler = RotatingFileHandler("rp.txt",maxBytes = 1*1024,backupCount = 3)
rHandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
rHandler.setFormatter(formatter)
console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)
logger.addHandler(rHandler)
logger.addHandler(console)
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")
Registro do console
Registros do gerenciador de arquivos
Ganhos de aprendizagem
Domine a criação de objetos de log de mensagens, formatação de arquivos de mensagens de log de mensagens, filtros e processadores. Um dos aplicativos e o mecanismo de tratamento de exceções completam o prompt do console em conjunto: a seção de prompt de mensagem em vermelho no pycharm.