Skip to main content

Production-ready Python logging library with built-in configurations for dev/test/prod environments

Project description

Rocket Logger

生产级 Python 日志库,开箱即用,支持多环境配置和灵活的自定义覆盖。

特性

  • 🚀 开箱即用:预配置 dev/test/prod 三个环境
  • 🎯 零配置启动:安装后直接 get_logger(env="prod")
  • 🔧 灵活覆盖:支持自定义配置文件增量覆盖
  • 📦 配置内置:配置文件打包在库中,无需用户准备
  • 🎨 彩色输出:开发环境支持彩色日志
  • 🔄 自动轮转:支持按时间和按大小轮转
  • 类型安全:基于 Pydantic 的配置验证

快速开始

安装

pip install jsrocket

基础使用

from rocket.logger import get_logger

# 开发环境(DEBUG 级别,彩色输出)
logger = get_logger(env="dev")
logger.debug("调试信息")
logger.info("信息日志")

# 测试环境(INFO 级别)
logger = get_logger(env="test")
logger.info("测试执行")

# 生产环境(ERROR 级别,无控制台输出)
logger = get_logger(env="prod")
logger.error("生产错误")
logger.critical("严重问题")

环境配置

Dev 环境(开发)

  • 日志级别:DEBUG
  • 控制台输出:彩色日志
  • 文件路径:logs/dev/app.log
  • 日志轮转:每天午夜,保留 7 天

Test 环境(测试)

  • 日志级别:INFO
  • 控制台输出:启用
  • 文件路径:logs/test/app.log
  • 日志轮转:每天午夜,保留 3 天

Production 环境(生产)

  • 日志级别:ERROR
  • 控制台输出:关闭
  • 文件路径:logs/prod/app.log
  • 日志轮转:每天午夜,保留 30 天

自定义配置

创建自定义配置文件,只需包含要覆盖的字段:

# my_config.yaml
logger:
  level: "WARNING"  # 只改日志级别
  handlers:
    file_path: "/var/log/myapp/app.log"  # 只改路径
  # 其他字段保持环境默认值

使用自定义配置:

logger = get_logger(
    env="prod",
    config_file="/etc/myapp/logging.yaml"
)

高级用法

环境变量控制

import os

env = os.getenv("APP_ENV", "dev")
logger = get_logger(env=env)

Docker 部署

# Dockerfile
ENV APP_ENV=prod
COPY logging.yaml /etc/myapp/logging.yaml
# 应用代码
import os
logger = get_logger(
    env=os.getenv("APP_ENV", "prod"),
    config_file="/etc/myapp/logging.yaml"
)

Kubernetes ConfigMap

# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-logging
data:
  logging.yaml: |
    logger:
      handlers:
        file_path: "/var/log/app/app.log"
      rotation:
        backup_count: 90
# 应用代码
logger = get_logger(
    env="prod",
    config_file="/etc/config/logging.yaml"
)

配置选项

完整配置示例

logger:
  name: "my-app"
  level: "INFO"  # DEBUG/INFO/WARNING/ERROR/CRITICAL
  encoding: "utf-8"
  
  handlers:
    console: true
    file: true
    file_path: "logs/app.log"
  
  rotation:
    type: "time"  # time 或 size
    when: "midnight"  # 时间轮转触发时机
    interval: 1
    backup_count: 30
    max_size: "100MB"  # 按大小轮转时的上限
  
  format:
    console: "%(asctime)s - %(levelname)s - %(message)s"
    file: "%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s"
    json: false  # JSON 格式输出

按大小轮转

logger:
  rotation:
    type: "size"
    max_size: "500MB"
    backup_count: 50

JSON 格式输出

logger:
  format:
    json: true

最佳实践

1. 开发环境

# 本地开发使用 dev 环境
logger = get_logger(env="dev")

2. 测试环境

# CI/CD 中使用 test 环境
logger = get_logger(env="test")

3. 生产环境

# 生产部署使用 prod + 自定义配置
logger = get_logger(
    env="prod",
    config_file="/etc/myapp/logging.yaml"
)

4. 最小化自定义配置

只包含需要修改的字段,其他使用环境默认值:

# 最小配置示例
logger:
  handlers:
    file_path: "/custom/path/app.log"

文档

详细配置说明请参考:CONFIG_USAGE.md

依赖

  • Python >= 3.13
  • PyYAML >= 6.0.0
  • Pydantic >= 2.0.0

许可

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

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

jsrocket-0.1.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

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

jsrocket-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file jsrocket-0.1.0.tar.gz.

File metadata

  • Download URL: jsrocket-0.1.0.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for jsrocket-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f2613a40fc5f06d57ceed45f49e09b7e286e71212051dd7ece45b43f94013313
MD5 85f8897d6c0c8d55a27277706a452495
BLAKE2b-256 f663aee1a30999b617a56fc5fb93ec3dbabcae80fa919f2e857690d88c204099

See more details on using hashes here.

File details

Details for the file jsrocket-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jsrocket-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for jsrocket-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 72e3eece58149f4a2748003775a0ddf3426a6d69488c870691735cb50d0c1e01
MD5 0d08d1e9dbb3ec0411fe726047261ca4
BLAKE2b-256 011f759f63c63b319916f15850702097ea782e393807bfd313787d6954fc9e12

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