Python Logging

一、导入

import logging

二、核心概念

(一)Logger(日志记录器):应用程序直接调用的接口,负责产生日志

1.logging.getLogger()

'''
logging.getLogger():
不传参数(或者传“”),返回root logger
传参数(例如"my_app"),返回对应的logger实例
'''
logger = logging.getLogger(__name__)

2.logger.setLevel():

'''
logger.setLevel():设置Logger最低记录级别,即只有等于或高于指定级别的日志才会被处理
级别优先级:DEBUG < INFO < WARNING < ERROR < CRITICAL
'''
# 只记录INFO及以上级别
logger.setLevel(logging.INFO)

     (二)Handler(处理器)

'''
Handler:决定日志输出位置
常见类型:
StreamHandler:控制台
FileHandler:文件
RotatingFileHandler:按大小分割日志文件
TimeRotatingFileHandler:按时间分割日志文件
'''
# 创建控制台处理器
console_handler = logging.StreamHandler()

 addHandler()

'''
addHandler(handler):将一个logging.Handler实例(如FileHandler,StreamHandler)添加到Logger中
Logger会将日志记录传递给所有绑定的Handler,由Handler决定如何处理
'''
logger.addHandler(console_handler)

(三)Formatter(格式化器)

'''
Formatter:定义日志的显示格式
常用格式字段:
%(asctime)s        时间
%(levelname)s        日志级别(INFO,WARNING)
%(message)s        日志内容
%(name)s            Logger名称
'''
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

      (四) Filter(过滤器)

'''
Filter:控制哪些日志需要记录
'''
class MyFilter(logging.Filter):
    def filter(self, record):
        return "secret" not in record.getMessage()
logger.addFilter(MyFilter())

二、基本配置

1.快速配置

import logging

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler("app.log"),
        logging.StreamHandler()
    ]
)

2.手动配置

import logging

LOG_DIR = r"D:\DeskTop\Projects"
os.makedirs(LOG_DIR, exist_ok=True)
log_file_path = os.path.join(LOG_DIR, "log.txt")

logger = logging.getLogger()
logger.setLevel(logging.INFO)

console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))

file_handler = logging.FileHandler(log_file_path, encoding='utf-8')
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))

logger.addHandler(console_handler)
logger.addHandler(file_handler)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值