Yet anthor logger tool
Works on Nodejs and Browsers
Terminal:
Browser:
Install
npm i -D @rabbitcc/log
Usage
import log from '@rabbitcc/log'
log.info('name', 'action', 'contents')
Setup logger level
// via cross-env scripts
cross-env LOGGER_LEVEL=DEBUG
Or 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=40
If 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.
webpack-hot-client
socket server
Feature, log sync on terminal and browser via 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'
}