A lightweight utility for styled console logging and simple debug message capture.
- Purpose: Logs CSS-styled messages to the browser console and captures short debug entries to
localStoragefor lightweight client-side debugging. - Key exports:
logcad.logc(styled console output)logcad.logd(debug logger that records tolocalStorage, dispatches adebuglogevent).logcad.logdrl(debug log reader that reads fromlocalStorageand dispatches adebuglogevent).
- Styled console output: Compose messages using simple objects (color, background, bold/italic/underline, border).
- Debug log Event: Dispatches a
debuglogevent for realtime consumers. - Debug capture:
logdstores debug entries inlocalStorageunder_debug_logand dispatches adebuglogevent for realtime consumers. - Zero dependencies: Pure JavaScript, designed for use in browser environments and CommonJS builds.
Build uses vite.js and custom rollup.js config to bundle and or minify for targets esm, and umd.
vite.config.jsandpackage.json
◾ Scripts:
scripts:
dev
build
lint
lint:fix
update:npm
serve:example
publish:npm
Artifacts are available on GitLab Releases
-
CDN:
-
Link from a jsdelivr CDN
-
Link from a unpkg CDN
If you used a
CDNlink, you're good to go!logcadwill be available in the global scope viawindow.logc,window.logd, andwindow.logdrlfunctions or justlogc,logd, andlogdrlfunctions as they are available in the global scope in browser environment. -
if you use a
CNDwithtype=module:import * as logcad from 'https://cdn.jsdelivr.net/npm/@staticcanvas/logcad@{version}/dist/logcad.esm.js'; // logcad is now available in the global scope `window.logc`, `window.logd`, `window.logdrl` or just `logc`, `logd`, `logdrl`
-
-
NPM:
npm install logcad@latest --save --save-dev- Add
logcadas a devDependency and don't forget to add it in yourpackage.jsondependencies. - Use:
import * as logcad from 'logcad';`
- Add
!note
🛑 Requirements:
Node.js for local builds; runs in modern browsers that provideconsole,localStorage, andCustomEvent.
Packages are available on npm by related jsdilver and unpkg cdns.
| JSDELIVR | LINK |
|---|---|
| USD | https://cdn.jsdelivr.net/npm/@staticcanvas/logcad@{version}/dist/logcad.js |
| USD minified | https://cdn.jsdelivr.net/npm/@staticcanvas/logcad@{version}/dist/logcad.min.js |
| ESM Module | https://cdn.jsdelivr.net/npm/@staticcanvas/logcad@{version}/dist/logcad/+esm' |
| ESM Module minified | https://cdn.jsdelivr.net/npm/@staticcanvas/logcad@{version}/dist/logcad.esm.min.js |
| UNPKG | LINK |
|---|---|
| USD | https://unpkg.com/@staticcanvas/logcad@{version}/dist/logcad.js |
| USD minified | https://unpkg.com/@staticcanvas/logcad@{version}/dist/logcad.min.js |
| ESM Module minified | https://unpkg.com/@staticcanvas/logcad@{version}/dist/logcad.esm.min.js |
| ESM Module | https://unpkg.com/@staticcanvas/logcad@{version}/dist/logcad.esm.min.js |
https://cdn.jsdelivr.net/npm/@staticcanvas/logcad@0.4.10/+esm
-
Vanilla(
UMD(browser)) via<script src="path|url">tag: will be available in the global scope viawindow.logcad,window.logc,window.logd.window.logdrl.<script src="path/to/logcad.js"></script> <!-- or via cdn: jsdelivr --> <script src="https://cdn.jsdelivr.net/npm/@staticcanvas/logcad@0.3.0/dist/logcad.js"></script> <!-- or via cdn: unpkg --> <script src="https://unpkg.com/@staticcanvas/logcad@0.3.0/dist/logcad.js"></script>
// UMD logcad.logc([ { text: 'Hello UMD(browser)', c: '#fff', bg: '#333', b: true }, { text: ' Export Type', c: '#fff', bg: '#333', b: true } ]); logcad.logd( { name: 'app', logname: 'app' }, 'init', 'App initialized', { user: 'alice' } ); logcad.logdrl( { name: 'app', logname: 'app' }, 'init', 'App initialized', ) // or access via `window.logc` and `window.logd` which can be called via logc, logd, logdrl as they are available in the global scope in browser environment
-
ESM6 Module(
ESM6(browser)withtype="module"): import from file or cdn and walla!import { logc, logd } from 'path/to/logcad.js'; // or import { logc, logd } from 'https://cdn.jsdelivr.net/npm/@staticcanvas/logcad@{version}/dist/logcad.esm.js'; // or import logcad from 'https://cdn.jsdelivr.net/npm/@staticcanvas/logcad@{version}/dist/logcad.esm.js'; // UMD logc([ { text: 'Hello UMD(browser)', c: '#fff', bg: '#333', b: true }, { text: ' Export Type', c: '#fff', bg: '#333', b: true } ]); logd( { name: 'app', logname: 'app' }, 'init', 'App initialized', { user: 'alice' } );
-
logc(objectArray): Logs CSS-styled messages.- Parameters:
objectArray— Array of objects where each object may include:text(string): Text to display (required).c(string): Text color (CSS color string). Default:#000.bg(string): Background color (CSS color string).b(boolean): Bold flag.i(boolean): Italic flag.u(boolean): Underline flag.border(string): CSS border value (e.g.,1px solid red).
- Parameters:
-
logd(name, action, message, args, trace = false): Logs debug-style entries and records them inlocalStorage.- Parameters:
name(object): Logger metadata. Common properties:name,logname,color,bg,logcolor,logbg.action(string): Short action label.message(string): Descriptive message.args(any): Additional data; will be stringified.trace(boolean): If true, includes a stack trace in the output and saved entry.
- Behavior: Appends a structured entry to the
_debug_logarray inlocalStorage(keeps last 100 entries) and dispatcheswindowCustomEventnameddebuglogwith the new entry indetail.
- Parameters:
-
logdrl(): Prints the_debug_logarray fromlocalStorageto the console.- Behavior: Reads the
_debug_logarray fromlocalStorageand prints it to the console. - Returns: The
_debug_logarray. - Example:
logdrl({ name: 'server', logname: 'server' }); - Notes: This function does not clear the
_debug_logarray inlocalStorage.
- Behavior: Reads the
-
Perform a simple styled message and a debug entry:
// log message in the color logc([ { text: 'Server', c: 'white', bg: 'green', b: true }, { text: ' ✓ ', c: 'lightgreen' }, { text: 'Ready', c: 'white' } ]); // log debug logd({ name: 'server', logname: 'server' }, 'listen', 'Server listening', { port: 8080 }); // read debug log logdrl({ name: 'server', logname: 'server' });
Development
- Local edit: Edit
src/logcad.jsdirectly. The module is dependency-free. - Testing in browser: Open a page that imports or includes
src/logcad.jsand calllogc/logdfrom the console. - Dev notes:
logdassumeslocalStorageandwindoware available. In Node-only environments,logdwill not persist tolocalStorage.
- Support for multiple log levels (debug, info, warning, error)
- controlled by
loglevelvariable insrc/logcad.js - can pull from
localStorage_debug_log_levelvariable
- controlled by
MIT — See LICENSE file in the repository.
