RConsole
A WebSocket-based logging library for Rust — send structured log messages to the NConsole desktop app. Mirrors the API of the Flutter nconsole package.

Installation
Add dependency to Cargo.toml:
[]
= "1.0.1"
Desktop app download: NConsole
Quick Start
use *;
use json;
API
Configuration
use NConsole;
// Set WebSocket URI (auto-normalizes: adds ws:// and :9090 if needed)
set_uri; // → ws://192.168.1.100:9090
set_uri; // → ws://localhost:3000
set_uri; // → kept as-is
// Enable/disable logging
set_enable; // disable (all log calls become no-ops)
set_enable; // enable
// Check status
let enabled = is_enable;
let uri = uri;
Macros (recommended — supports mixed types)
| Macro | Equivalent |
|---|---|
nlog!(a, b, c) |
console.log(a, b, c) |
ninfo!(a, b) |
console.info(a, b) |
nwarn!(a, b) |
console.warn(a, b) |
nerror!(a, b) |
console.error(a, b) |
ngroup!("label") |
console.group("label") |
ngroup_collapsed!("label") |
console.groupCollapsed("label") |
ngroup_end!() |
console.groupEnd() |
nclear!() |
console.clear() |
Each argument can be any type that implements serde::Serialize — strings, numbers, bools, structs, serde_json::Value, etc.
let user = User ;
nlog!;
Method API (homogeneous types only)
use NConsole;
log;
info;
warn;
error;
group;
group_end;
clear;
Log Listener
use ;
set_log_listener;
Log Types
| Type | Description |
|---|---|
log |
Standard log message |
info |
Informational message |
warn |
Warning message |
error |
Error message |
group |
Start a named log group |
groupCollapsed |
Start a collapsed log group |
groupEnd |
End the current log group |
clear |
Clear the console |
Architecture
src/
├── lib.rs # Crate root, re-exports
├── macros.rs # nlog!, ninfo!, nwarn!, nerror!, etc.
├── domain/ # Pure types (no dependencies)
│ ├── log_type.rs # LogType enum
│ └── log_arg.rs # LogArg enum
├── console/ # Core logic
│ ├── uri.rs # URI normalization
│ ├── client_info.rs # ClientInfo struct
│ └── web_console.rs # WebConsole singleton (thread-safe)
├── infrastructure/ # Transport
│ └── websocket.rs # WsConnection wrapper
└── services/ # Public API
└── logger.rs # NConsole façade
Thread Safety
All methods are thread-safe. The internal WebConsole singleton is protected by Mutex via once_cell::sync::Lazy.
Author
NghiNV
License
MIT