Skip to main content

A modern colorful logging library for Python with rich context information

Project description

CraneLog

一个现代化的 Python 彩色日志工具,用于替代原生 logging 模块。

✨ 特性

  • 🎨 彩色输出 - 时间戳、日志级别、文件名、行号等信息使用不同颜色显示
  • 📍 丰富的上下文 - 自动显示文件名、行号、函数名、类名
  • 🔧 简洁 API - 既支持模块级快捷函数,也支持创建独立的 Logger 实例
  • 📁 文件日志 - 支持将日志同时保存到本地文件
  • 🎯 零依赖 - 纯 Python 实现,无需安装额外依赖
  • 🖥️ 智能检测 - 自动检测终端是否支持颜色输出

📦 安装

pip install cranelog

或使用 PDM:

pdm add cranelog

🚀 快速开始

基本用法

import cranelog

# 使用模块级函数(最简单的方式)
cranelog.debug("这是一条调试信息")
cranelog.info("这是一条普通信息")
cranelog.warning("这是一条警告信息")
cranelog.error("这是一条错误信息")
cranelog.critical("这是一条严重错误信息")

在函数中使用

import cranelog

def process_data():
    cranelog.info("开始处理数据")
    # ... 处理逻辑
    cranelog.info("数据处理完成")

process_data()
# 输出会自动包含函数名 process_data

在类中使用

import cranelog

class DataProcessor:
    def process(self):
        cranelog.info("类方法中的日志")
        # 输出会包含类名 DataProcessor 和方法名 process

processor = DataProcessor()
processor.process()

创建专用的 Logger 实例

from cranelog import get_logger, DEBUG

# 创建一个 DEBUG 级别的 logger
logger = get_logger("myapp", level=DEBUG)

logger.debug("调试信息")
logger.info("普通信息")
logger.warning("警告信息")
logger.error("错误信息")

自定义颜色方案

from cranelog import get_logger, ColorScheme, Color

# 创建自定义颜色方案
custom_scheme = ColorScheme(
    timestamp_color=Color.BRIGHT_BLACK,
    filename_color=Color.BRIGHT_BLUE,
    lineno_color=Color.BLUE,
    funcname_color=Color.BRIGHT_YELLOW,
    classname_color=Color.BRIGHT_MAGENTA,
)

logger = get_logger("myapp", color_scheme=custom_scheme)
logger.info("使用自定义颜色方案")

使用预定义的颜色方案

from cranelog import get_logger, DARK_SCHEME, VIBRANT_SCHEME

# 使用暗色方案
dark_logger = get_logger("dark", color_scheme=DARK_SCHEME)

# 使用鲜艳方案
vibrant_logger = get_logger("vibrant", color_scheme=VIBRANT_SCHEME)

将日志保存到文件

import cranelog

# 方式1: 使用默认文件名 (格式: cranelog_YYYYMMDD_HHMMSS.log)
log_file = cranelog.add_file_handler()
print(f"日志保存到: {log_file}")

cranelog.info("这条日志会同时输出到终端和文件")

# 方式2: 使用自定义文件名
cranelog.add_file_handler("my_app.log")
cranelog.info("保存到自定义文件")

# 方式3: 保存到指定目录(目录会自动创建)
cranelog.add_file_handler("logs/application.log")

# 获取当前所有日志文件
log_files = cranelog.get_log_files()

# 移除文件处理器
cranelog.remove_file_handler()  # 移除所有
cranelog.remove_file_handler("my_app.log")  # 移除指定文件

在 Logger 实例中使用文件日志

from cranelog import get_logger, DEBUG

# 方式1: 创建时指定日志文件
logger = get_logger("myapp", level=DEBUG, log_file="app.log")
logger.info("创建时指定日志文件")

# 方式2: 创建后添加
logger2 = get_logger("myapp2", level=DEBUG)
logger2.add_file_handler("app2.log")
logger2.info("后续添加日志文件")

# 一个 Logger 可以输出到多个文件
logger2.add_file_handler("backup.log")
logger2.warning("同时写入多个文件")

# 关闭文件处理器
logger.close()
logger2.close()

📋 日志级别

级别 数值 说明
DEBUG 10 调试信息
INFO 20 普通信息
WARNING 30 警告信息
ERROR 40 错误信息
CRITICAL 50 严重错误

🎨 输出格式

每条日志包含以下信息(使用不同颜色):

[时间戳] [级别] [文件名:行号] [类名.函数名] 消息内容

示例输出:

[2024-01-15 10:30:45] [INFO    ] [main.py:25] [DataProcessor.process] 开始处理数据

📄 License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cranelog-0.2.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cranelog-0.2.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file cranelog-0.2.0.tar.gz.

File metadata

  • Download URL: cranelog-0.2.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.26.2 CPython/3.10.12 Linux/5.15.0-76-generic

File hashes

Hashes for cranelog-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2d8a67a6f8a990a4e96b1810b2fc2afdc5820ff73ddcdbfa1dbf7553210ec83a
MD5 9b99cb29c5565fefec2c649f871ef0c5
BLAKE2b-256 42ef39d93af2aac4d17c01cc9964bc2dc4db947af8ab74dfb6b3c08b40812cf4

See more details on using hashes here.

File details

Details for the file cranelog-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: cranelog-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.26.2 CPython/3.10.12 Linux/5.15.0-76-generic

File hashes

Hashes for cranelog-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 80139c07e8ad539b3ccf03480e11edeaa0ce2d1746cd1bd03a14a20e54f43174
MD5 c1130cd51e0c860fecc67c8d63c69c7e
BLAKE2b-256 4afaa38ed51220bb58d7b76cc0779c43380d4070eaf59d784692eea157a9b931

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page