Skip to main content

Configurable logger that writes to CLI, file, HTTP API, and optional databases via simple JSON config.

Project description

cnblogger

Configurable, typed Python logger that can write to CLI, file, HTTP API, and databases. Controlled by a simple JSON config file cnblogger.config.

Installation

pip install cnblogger                 # base (no optional deps)
pip install "cnblogger[colors]"      # CLI colors via colorama
pip install "cnblogger[api]"         # HTTP API sink via requests
pip install "cnblogger[sqlite]"      # SQLite (built-in stdlib, extras not required)
pip install "cnblogger[mysql]"       # MySQL via PyMySQL
pip install "cnblogger[postgres]"    # PostgreSQL via psycopg2-binary
pip install "cnblogger[mongo]"       # MongoDB via pymongo
pip install "cnblogger[all]"         # everything

Usage

from cnblogger import CNBLogger

logger = CNBLogger()  # auto-loads ./cnblogger.config if present
logger.info("App started")
logger.error("Something went wrong")

Configuration

If cnblogger.config does not exist, it will be created automatically with defaults on first use. You can also copy from cnblogger.config.example.

Config location:

  • By default: put cnblogger.config in the app's current working directory (CWD).
  • Env override:
export CNBLOGGER_CONFIG=/path/to/cnblogger.config
  • Code override:
from cnblogger import CNBLogger
logger = CNBLogger(config_path="/path/to/cnblogger.config")

Create or edit a cnblogger.config JSON file in your project root (or set CNBLOGGER_CONFIG env var to a path). Example with databases:

{
  "mode": "all",
  "delimiter": "|",
  "file_dir": "./.logs",
  "file_same_day_mode": "append",
  "api_url": "https://log.example.com/ingest",
  "api_verify": true,
  "api_timeout_seconds": 3.0,
  "api_headers": {"Authorization": "Bearer <token>"},
  "db_sqlite_path": "./.logs/logs.db",
  "db_sqlite_table": "logs",
  "db_mysql": {"host": "localhost", "port": 3306, "user": "root", "password": "", "database": "logs", "table": "logs"},
  "db_postgres": {"host": "localhost", "port": 5432, "user": "postgres", "password": "", "database": "logs", "table": "logs", "sslmode": "prefer"},
  "db_mongo_uri": "mongodb://localhost:27017",
  "db_mongo_database": "logs",
  "db_mongo_collection": "entries",
  "colors": {"INFO": "cyan", "CRITICAL": "red", "ERROR": "bright_yellow", "WARN": "yellow", "DEBUG": "blue"},
  "timestamp_utc": false
}
  • mode: cli | file | api | both (cli+file) | all (cli+file+api). Default: cli.
  • file names: yyyymmdd.log (append by default on same day). If file_same_day_mode is new, files are yyyymmdd_HHMMSS.log.
  • CLI format: [yyyy.mm.dd hh:mm:ss.mmm] [LEVEL] message (LEVEL colored, colors configurable).
  • File/API/DB format stored consistently as ts|LEVEL|message or in columns.
  • API verify: Set api_verify to true/false or a CA bundle path. Protocol is inferred from api_url.
  • Databases:
    • SQLite: set db_sqlite_path and optional db_sqlite_table.
    • MySQL: set db_mysql object with connection details and table.
    • Postgres: set db_postgres object; optional sslmode.
    • MongoDB: set db_mongo_uri, db_mongo_database, db_mongo_collection.

Types

The package is typed (py.typed). All public APIs include type hints.

License

MIT - See the LICENSE file.

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

cnblogger-0.2.1.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

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

cnblogger-0.2.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file cnblogger-0.2.1.tar.gz.

File metadata

  • Download URL: cnblogger-0.2.1.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for cnblogger-0.2.1.tar.gz
Algorithm Hash digest
SHA256 d16139989fd9637c27f9e2714f1bdcceaebf0850851ee499087cdf8695a55ced
MD5 6d97dd1b98158561a22fe8bd767a2aca
BLAKE2b-256 6c42258f61a3f5df8b1a7d354b45fc7f869167aeeefdc10fcf28f11bab3a535a

See more details on using hashes here.

File details

Details for the file cnblogger-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: cnblogger-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for cnblogger-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6f97b749c3ecef788130323a2819d1064f63d3ec1bc64aee6fa8a81f6ac1358c
MD5 329f614c1189482028acd0e06977279b
BLAKE2b-256 0959f12612572e6a94573de41d1c376035ba66cadacf9c75bc0a922b304576b2

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