https://github.com/better-mojo/logger
mojo logger, please check: https://prefix.dev/channels/better-mojo
https://github.com/better-mojo/logger
ffi mojo mojo-lang spdlog spdlog-rs
Last synced: 2 days ago
JSON representation
mojo logger, please check: https://prefix.dev/channels/better-mojo
- Host: GitHub
- URL: https://github.com/better-mojo/logger
- Owner: better-mojo
- License: apache-2.0
- Created: 2026-05-24T06:48:38.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-27T12:13:45.000Z (about 1 month ago)
- Last Synced: 2026-05-27T14:12:16.347Z (about 1 month ago)
- Topics: ffi, mojo, mojo-lang, spdlog, spdlog-rs
- Language: Mojo
- Homepage:
- Size: 111 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# logger
- â
Binding the popular Rust logging library [spdlog-rs](https://github.com/SpriteOvO/spdlog-rs) via FFI for Mojo usage.
- â
Redesigned API inspired by Python's [loguru](https://github.com/delgan/loguru) logging library for improved usability.
Logger Mojo
đ Binding spdlog-rs logging library for mojo đĨ
![Mojo Version][language-shield]
[![MIT License][license-shield]][license-url]
[](https://pixi.sh)
[![Contributors Welcome][contributors-shield]][contributors-url]
[įŽäŊ䏿](README_CN.md) | English
## Package Contents
| Project | Package | Host | Rank | Description |
|-------------------------------------|-------------------------|------|--------|------------------------------------------|
| â
[spdlog-ffi](./packages/spdlog-ffi) | [libspdlog_ffi](https://prefix.dev/channels/better-ffi/packages/libspdlog_ffi) | [prefix.dev](https://prefix.dev/channels/better-ffi) | âī¸âī¸âī¸ | spdlog-rs ffi package |
| â
[spdlog](./packages/spdlog) | [spdlog](https://prefix.dev/channels/better-mojo/packages/spdlog) | [prefix.dev](https://prefix.dev/channels/better-mojo) | âī¸âī¸âī¸âī¸ | spdlog-mojo package |
## Features
- â
Support logging to: `console`, `file`, `stdout`, `stderr`
- â
Support custom log `format`
- â
Support log `level` configuration
- â
Support `colored` logs
## Usage
- Import dependencies:
```toml
# First add channel sources, including spdlog-ffi package and spdlog package
channels = [
"https://conda.modular.com/max-nightly",
"https://repo.prefix.dev/better-ffi", # contains spdlog-ffi package
"https://repo.prefix.dev/better-mojo", # contains spdlog mojo package
"conda-forge",
]
# Add dependency packages
[dependencies]
mojo = ">=1.0.0b2.dev2026052706,<2" # TODO X: fix version inconsistency issue!!!
# FFI dependency
libspdlog_ffi = ">=0.1.0,<0.2"
# Mojo package dependency
# spdlog = { git = "https://github.com/better-mojo/logger.git", branch = "main" }
spdlog = ">=0.1.2,<0.2"
```
- â
Simple example:
```mojo
from spdlog import get_logger
def main() raises -> None:
var logger = get_logger()
logger.info("Hello, World!")
logger.debug("Processing item {} of {}", "5", "100")
logger.warn("Disk usage is at {}%", "85")
```
- â
run:
```bash
# Run logging example
pixi run mojo -I . examples/logger.mojo
```

- â
Complete example [examples/try-uuid](examples/try-uuid)
- Includes complete package dependency import methods
```bash
# Install dependencies
pixi install
# Run
pixi run mojo src/main.mojo
```
### File Logging Example
- [examples/logger_file.mojo](examples/logger_file.mojo)
- Includes complete package dependency import methods
- Includes file logging example
## Development Environment
### Install Dependencies
- Install [Taskfile](https://github.com/go-task/go-task): build tool
- Install [Rust](https://www.rust-lang.org/tools/install)
- Install [pixi](https://pixi.sh/)
- Install [rattler-build](https://rattler-build.prefix.dev/latest/#installation): package management tool, compile + publish rust binary packages
- Install [mojo](https://mojolang.org/install/)
```bash
task setup
```
### Build and Debug
- â
Build and debug spdlog-ffi package
```bash
# Run examples
task ffi:r
# Build spdlog-ffi package
task ffi:b
# Release spdlog-ffi package
task ffi:rel
```
- â
Build and debug [examples](./examples)
```bash
# Run examples
task run:logger
```
## Release and Publish to Prefix.dev
- â
- â
- â
[Taskfile](./Taskfile.yml)
```bash
# Publish spdlog-ffi package to prefix.dev
task m:q:rs
# Publish spdlog package to prefix.dev
task m:q:mojo
```
- â
Compile and release Linux version, based on `orbstack` virtual machine
- Note: each time you need to publish the ffi library for `3 OS versions` to prefix.dev first, then publish the spdlog package. (dependency order)
```bash
# List available virtual machines
orbctl list
# Connect to linux-aarch64 architecture virtual machine, execute compile + publish
orbctl run -m u22dev
# Connect to linux-64 architecture virtual machine, execute compile + publish
orbctl run -m u22build
```
## Reference
### Mojo FFI Packages
- â
- â
### Python loguru
- â
### Rust spdlog
- â
### Rust FFI
- â
- â
-
-
- â
- â
[language-shield]: https://img.shields.io/badge/Mojo%F0%9F%94%A5-1.0.0b2-orange
[license-shield]: https://img.shields.io/github/license/better-mojo/jojo?logo=github
[license-url]: https://github.com/better-mojo/jojo/blob/main/LICENSE
[contributors-shield]: https://img.shields.io/badge/contributors-welcome!-blue
[contributors-url]: https://github.com/better-mojo/uuid#contributing