
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
Affected versions:
High performance debug logging with enhanced security.
Seamlessly integrates the debug module with the high performance pino
logger so you can turn on debug logs in production scenarios
with minimum overhead and maximum security.
debug (20x in extreme mode!)pino/bunyan/bole format)debug isn't)debug logging callsThis package is actively maintained with security as a top priority:
For security best practices, see SECURITY_BEST_PRACTICES.md.
To report security vulnerabilities, see SECURITY.md.
$ npm install --save logkitx
If all you want is fast JSON logging to STDOUT
$ DEBUG=* node -r logkitx app.js
Namespaces are enabled the usual way, via the DEBUG
environment variable.
The namespace is also included in the log output, in the ns key.
Here's a sample log when the above is applied to a generic express app:
{"pid":8784,"hostname":"Davids-MacBook-Pro.local","level":20,"time":1480277659273,"msg":"skip empty body","ns":"body-parser:json","v":1}
For fine grained control over output stream, and mappings
between debug namespaces and pino logger levels,
supply a pino instance and an optional options object with
a map property containing mappings.
NOTE: logkitx must be required at the entry point of your node process,
before any other modules have been loaded
Again this example assumes a generic express app:
const pinoDebug = require('logkitx')
const logger = require('pino')({level: process.env.LEVEL || 'info'}, process.stderr);
pinoDebug(logger, {
auto: true, // default
map: {
'example:server': 'info',
'express:router': 'debug',
'*': 'trace' // everything else - trace
},
levels: ['info', 'warn', 'error', 'fatal', 'trace', 'debug']
})
The auto option turns on any namespaces listed in the map object
(so we don't have to use the DEBUG environment variable to turn them on).
NOTE: logkitx can only be called once.
Call logkitx with a pino logger instance only and any debug namespaces
enabled via DEBUG or debug.enable will be logged with the level 20 ('debug').
Remember, if you want to see the messages you need to set the pino logger instance
logging level to 'debug'.
Call logkitx without arguments and a default pino instance will be created with
the logging level set to 20 ('debug' level).
Any debug namespaces enabled via DEBUG or debug.enable will be logged
with the level 20 ('debug').
This is the recommended usage. Call logkitx with a pino logger instance,
and an opts object containining map property.
opts.map {'debug-namespace: 'pino-loglevel-label'}The keys of the map property correspond to the same namespaces that can be
set on the DEBUG environment variable:
pinoDebug(pinoInstance, {
map: {
'my-app': 'info',
'some-dep:*': 'debug',
'*': 'trace'
}
})
opts.levels ArrayArray of log levels to be used with logger-base. Default: ['info', 'warn', 'error', 'fatal', 'trace']
pinoDebug(pinoInstance, {
levels: ['info', 'warn', 'error', 'fatal', 'trace', 'debug']
})
opts.format StringFormat option to be passed to logger-base for output formatting. Default: 'logfmt'
Available formats depend on logger-base capabilities (e.g., 'logfmt', 'json', 'pretty').
pinoDebug(pinoInstance, {
format: 'logfmt' // or 'json', 'pretty', etc.
})
opts.auto [true] | falseIf true (default) any debug namespaces found in the keys of opts.map will be
enabled.
Additionally, any debug namespaces enabled via DEBUG or debug.enable
will be logged with the level 20 ('debug').
If false, any namespaces that appear in opts.map and are enabled via
DEBUG or debug.enable will be logged to with the corresponding log level,
(as specified in the opts.map). Any not specified in opts.map, but which
are enabled via DEBUG or debug.enable will be logged with the level 20 ('debug').
opts.skip ArrayEquivalent of prefixing a namespace with dash (-) when specifying
DEBUG namespaces. Any namespaces specified will not be logged.
$ npm run bench
==========
basic averages
Pino average: 249
Debug average: 395
PinoDebug average: 244
PinoExtremeDebug average: 119
==========
==========
object averages
PinoObj average: 262
DebugObj average: 2448
PinoDebugObj average: 256
PinoExtremeDebugDeepObj average: 126
==========
==========
deepobject averages
PinoDeepObj average: 4809
DebugDeepObj average: 30083
PinoDebugDeepObj average: 4793
PinoExtremeDebugDeepObj average: 4810
==========
The example folder has a generic express app, with some additions.
The package.json file has the following scripts:
"start": "node ./bin/www",
"start-preload": "DEBUG=* node -r ../ ./bin/www",
"start-programmatic": "./bin/www-programmatic",
"start-programmatic-debug": "LEVEL=debug ./bin/www-programmatic",
"start-programmatic-trace": "LEVEL=trace ./bin/www-programmatic"
The start-preload script demonstrates preload usage. It set's
the DEBUG environment variable to log everything,
and then uses the -r flag to load logkitx (relatively referenced).
The three scripts beginning start-programmatic all use a different
entry point where logkitx has been required and instantiated with
a pino instance and the mappings (as shown in usage examples).
Sponsored by nearForm
FAQs
High performance debug logging
The npm package logkitx receives a total of 157 weekly downloads. As such, logkitx popularity was classified as not popular.
We found that logkitx demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.