Distributed logger
npm install hypercore-logger
const Logger = require('hypercore-logger')
// pass backing hypercore
const log = new Logger(core)
// add a log message
await log.log({ hello: 'world' })Setup swarming with Hyperswarm on the core and somewhere else
const log = new Logger(core)
for await (const { timestamp, stats, message } of log.tail()) {
console.log(timestamp, stats, message)
}Create a new logger backed by a Hypercore (core).
The discoverKey of the Hypercore backing the log.
The key of the Hypercore backing the log.
Wait for the log to fully open.
Log the msg arguments as a string representation intended for debugging, like console.log()'s output.
In addition to the string representation, metadata is automatically added to each log. Each appended to the backing Hypercore will look like:
{
timestamp: Date.now(),
stats: Stats,
subsystem: log.subsystem,
message: '' // String representation of msg
}
Stats includes:
stats: {
cpus: number, // Number of avaliable cpus
cpu: number, // Precent of CPU usage
cpuThread: number, // Percent of thread usage
cpuDelay: number, // Event loop delay the last ~5s
rss: integer, // Resident Set Size
heapUsed: integer, // Amount of heap used in js engine
heapTotal: integer, // Total size of heap in js engine
external: integer, // Memory usage of C++ objects bound to JavaScript objects
}
The block is encoded via the Hyperschema schema @logger/entry.
Returns a live Readable Stream of the contents of the log. Acts like tail -f
on a file, showing new data as it's appended.
- start: Index of the starting block
- end: Index of the end block
Example:
for await (const { timestamp, stats, message } of log.tail()) {
console.log(timestamp, stats, message)
}Find start and end blocks to apply filters
-
opts.gte: Start at the first entry with a timestamp >= gte
-
opts.gt: Start at the first entry with a timestamp > gt
-
opts.lte: End before the first entry with timestamp > lte
-
opts.lt: End before the first entry with timestamp >= lt
Fully close the log and the Hypercore backing it.
Comes with a CLI tool for tailing a hypercore-logger.
npm install -g hypercore-logger
hypercore-logger --key <key>
Usage:
hypercore-logger [flags]
Flags:
--key, -k <key> log core key
--peer, -p <key> noise key of peer
--storage, -s <dir> where to store the core, defaults to /tmp/hypercore-logger
--help|-h Show help
Apache-2.0