
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
loglevel-prefix
Advanced tools
Minimal, dependency-free and lightweight (0.9KB minified and gzipped) plugin for loglevel message prefixing
npm install loglevel-prefix --save
prefix(loglevel[, options]);
ES6
import log from 'loglevel';
import prefix from 'loglevel-prefix';
prefix(log);
log.warn('prefixed message');
CommonJS
var log = require('loglevel');
var prefix = require('loglevel-prefix');
prefix(log);
// or
// var log = require('loglevel-prefix')(require('loglevel'));
log.warn('prefixed message');
AMD
define(['loglevel', 'loglevel-prefix'], function(log, prefix) {
prefix(log);
log.warn('prefixed message');
});
Download production version and copy to your project folder
<script src="loglevel.min.js"></script>
<script src="loglevel-prefix.min.js"></script>
<script>
prefix(log);
log.warn('prefixed message');
</script>
options = {
format: '[%t] %l:',
dateFormatter: date => date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '$1'),
levelFormatter: level => level => level.toUpperCase(),
nameFormatter: name => name || 'root'
}
Output
[12:53:46] WARN: prefixed message
import log from 'loglevel';
import prefix from 'loglevel-prefix';
prefix(log, {
format: '[%t] %l (%n) <static>:',
dateFormatter: date => date.toISOString(),
levelFormatter: level => level.charAt(0).toUpperCase() + level.substr(1),
nameFormatter: name => name || 'global'
});
log.warn('prefixed message');
Output
[2017-05-29T16:53:46.000Z] Warn (global) <static>: prefixed message
// moduleA.js
import log from 'loglevel';
export default function () {
log.warn('message from moduleA');
}
// moduleB.js
import log from 'loglevel';
export default function () {
log.getLogger('moduleB').warn('message from moduleB');
}
// moduleC.js
import log from 'loglevel';
import prefix from 'loglevel-prefix';
export default function () {
prefix(log, {
format: '[%t] %l (%n) <moduleC>:',
});
log.warn('message from moduleC');
}
// main.js
import log from 'loglevel';
import prefix from 'loglevel-prefix';
import a from './moduleA';
import b from './moduleB';
import c from './moduleC';
prefix(log, {
format: '[%t] %l (%n):',
});
log.warn('message from root');
a();
b();
c();
Output
[16:53:46] WARN (root): message from root
[16:53:46] WARN (root): message from moduleA
[16:53:46] WARN (moduleB): message from moduleB
Uncaught TypeError: You can assign a prefix only to the root logger
// moduleA.js
import loglevel from 'loglevel';
import prefix from 'loglevel-prefix';
const log = prefix(loglevel.getLogger('moduleA'), {
format: '[%t] %l (%n):',
dateFormatter: date => date.toISOString()
});
log.warn('message from moduleA');
// moduleB.js
import loglevel from 'loglevel';
import prefix from 'loglevel-prefix';
const log = prefix(loglevel.getLogger('moduleB'), {
format: '[%t] %l (%n):',
dateFormatter: date => date.toISOString()
});
log.warn('message from moduleB');
// moduleC.js
import log from 'loglevel';
log.warn('message from moduleС');
// main.js
import loglevel from 'loglevel';
import prefix from 'loglevel-prefix';
import './moduleA';
import './moduleB';
import './moduleC';
loglevel.warn('message from root');
const log = prefix(loglevel.getLogger('main'), {
format: '[%t] %l (%n):',
dateFormatter: date => date.toISOString()
});
log.warn('message from main');
prefix(loglevel, {
format: '[%t] %l (%n):',
});
loglevel.warn('message from prefixed root');
Output
[2017-05-29T16:53:46.000Z] WARN (moduleA): message from moduleA
[2017-05-29T16:53:46.000Z] WARN (moduleB): message from moduleB
[16:53:46] WARN: message from moduleС
[16:53:46] WARN: message from root
[2017-05-29T16:53:46.000Z] WARN (main): message from main
Uncaught TypeError: You can assign a prefix only to child loggers
FAQs
Plugin for loglevel message prefixing
The npm package loglevel-prefix receives a total of 11 weekly downloads. As such, loglevel-prefix popularity was classified as not popular.
We found that loglevel-prefix demonstrated a not healthy version release cadence and project activity because the last version was released 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.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.