https://github.com/trussle/trussle-logging
A simple logging library by Trussle.
https://github.com/trussle/trussle-logging
javascript logging
Last synced: 5 months ago
JSON representation
A simple logging library by Trussle.
- Host: GitHub
- URL: https://github.com/trussle/trussle-logging
- Owner: trussle
- License: gpl-3.0
- Created: 2016-09-26T21:37:07.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2024-03-25T12:18:15.000Z (over 2 years ago)
- Last Synced: 2025-08-19T18:37:32.518Z (10 months ago)
- Topics: javascript, logging
- Language: JavaScript
- Size: 103 KB
- Stars: 0
- Watchers: 10
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# trussle-logging
*Maintained by [@jonnyarnold](https://github.com/jonnyarnold/)*
A simple library for all things logging.
## Usage
```js
import buildLogger from "trussle-logging";
const logger = buildLogger("MyComponent");
logger.info("Testing, testing, 123!");
```
You will need to set the **NODE_LOG_LEVEL** environment variable to choose the verbosity of the logger.
```bash
export NODE_LOG_LEVEL=DEBUG
```
## Advanced Usage
There are several advanced usage options:
```js
import buildLogger from "trussle-logging";
const logger = buildLogger({
source: "ComponentName", // Name for component; useful for navigating to your js file
transport: new TransportClass(), // Logging transport. Can also be an array: default is console transport
level: "INFO", // See Log Levels; if not set the the NODE_LOG_LEVEL environment will be used.
formatter: (logData) => `${logData.message}`, // See Formatters
variants: [] // See Variants
}
```
### Log Levels
* TRACE
* DEBUG
* INFO
* WARN
* ERROR
* CRITICAL
* NONE
### Transports
The default Transport logs to the console. If you want to write to your own transport then it will have to comply with the following interface:
```js
{
trace(message),
debug(message),
info(message),
warn(message),
error(message),
critical(message)
}
```
### Templates
Templates are functions that take a logData object and return the output to be sent to the transport.
The logData object has these properies
```js
{
timestamp, // A moment object of the current utc time
source, // The source component of the log
level, //The log level
message // The original log message
}
```
For more info on moment objects check out [momentjs](http://momentjs.com/).
If no formatter is chosen then the default will be chosen.
```js
(logData) => `(${logData.source}) [${logData.level}] ${logData.message}`;
```
### Multiple Logs
If your usecase requires you to have multiple logs - separate log files for INFO and ERROR logs for instance then you can add a variants property to your config; this will create a wrapper logger that will delegate to multiple loggers.
*(Only the ConsoleTransport supports variants at this time, so if you need to log to a file you'll need to roll your own transport class.)*
```js
{
source: "ComponentName",
level: "INFO",
variants: [
{
level: "ERROR",
transport: new MyCustomTransport()
}
]
}
```