@rabbitcc/log v0.4.6
Yet anthor logger tool
Works on Nodejs and Browsers
Terminal:

Browser:

Install
npm i -D @rabbitcc/logUsage
import log from '@rabbitcc/log'
log.info('name', 'action', 'contents')Setup logger level
// via cross-env scripts
cross-env LOGGER_LEVEL=DEBUGOr if you want works on browser, can pass the evn via webpack.EnvironmentPlugin
plugins: [
//...other plugins
new EnvironmentPlugin([ 'LOGGER_LEVEL' ]),
// or pass default level if not set
new EnvironmentPlugin({ LOGGER_LEVEL: process.env.LOGGER_LEVEL }),
]You can pass log level by number and string type, below syntax are vaild.
cross-env LOGGER_LEVEL=warn
cross-env LOGGER_LEVEL=WARN
cross-env LOGGER_LEVEL=40If process.env.DEBUG flag was found, the logger level is set to DEBUG.
There is some build-in logger levels:
| NAME | WEIGHT | DEFAULT? |
|---|---|---|
| trace | 100 | no |
| debug | 80 | no |
| info | 60 | yes |
| warn | 40 | no |
| error | 20 | no |
| fatal | 0 | no |
By the way, the FATAL level will highlight by background color.
Feature, log with origin file position

Enable this feature need setup as babel plugins:
{
"plugins": ["@rabbitcc/log/inject-position"]
}
// setup with options
{
"plugins": [["@rabbitcc/log/inject-position", {
// ...options see below
}]]
}The inject position plugin options:
type InjectPositionPluginOptions = {
test?: RegExp = /^@rabbitcc\/log/
}In browser, you need to add folder to chrome devtools workspace.

This feature also works on terminal. Your terminal should support hyperlinks.

Feature, log sync on terminal and browser via webpack-hot-client socket server
If you want log both on terminal and browser, like this:

You can use createSocket with webpack-serve via WebSocket.
Setup browsers:
import log, { createSocket } from '@rabbitcc/log/socket'
if('production' !== process.env.NODE_ENV) {
createSocket({ /* ...options see below */ })
}
log.info('name', 'action', 'contents')And apply logger to webpack.config.js:
import { createSocket } from '@rabbitcc/log/socket'
serve: {
on: {
listening() {
createSocket({ /* ...options see below */ })
}
}
}The createSocket options:
type CreateSocketOptions = {
/**
* socket url, default to webpack-hot-client ws socket string
*/
socket?: string = 'ws://localhost:8081'
}