为什么要使用 Logger,比print好在哪
• print 用于简单的调试,直接将信息输出到标准输出(如控制台)
• 缺少灵活性,无法方便地区分信息类型(如错误、警告)
• 无法自动记录时间、代码位置等信息
• logger是专门设计用于日志记录的工具,提供了丰富的功能
• 可以区分日志级别(如 DEBUG、INFO、WARNING、ERROR、CRITICAL)
• 支持将日志输出到多个目标(如文件、控制台、远程服务器)
• 可以设置格式化输出,自动记录时间、模块名、行号等信息
使用样例(python)
logger定义函数建议放入项目util文件夹下,方便引用
import logging
def algo_logger(name):
logger = logging.getLogger(name)
fmt = '%(asctime)s %(pathname)s %(funcName)s %(lineno)s %(levelname)s - %(message)s'
logging.basicConfig(format=fmt)
logger.setLevel(logging.DEBUG)
return logger
# 调用示例
logger = algo_logger("测试py")
logger.debug("这是调试信息")
logger.info("这是普通信息")
logger.warning("这是警告信息")
logger.error("这是错误信息")
logger.critical("这是严重错误信息")
高级配置(将日志写入文件)
# 创建 Logger
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
# 创建文件处理器,将日志写入文件
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
# 定义日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)
# 将处理器添加到 Logger
logger.addHandler(file_handler)
logger.addHandler(console_handler)