gle
Version:
Global Log Engine: Environment-agnostic debugging & logging utility
88 lines (57 loc) • 2.2 kB
Markdown
# GLE
> Global Log Engine: Environment-agnostic debugging & logging utility
GLE is a logging and debugging utility which allows for easy application/library debug log output when flagged by environment variables.
Inspired by `debug`, but with additional support for more environments like:
* NodeJS
* Browsers
* React-Native
## Installation
Run the following to install: `npm install gle --save`.
## Usage
Import one of the two following functions to start logging:
```typescript
import { createLog, log } from "gle";
const logContext = createLog("my-app:core");
logContext("test log", "some info");
// Or
log("my-app:core", "test log:", "some info");
```
`createLog` builds a log function with the **context** already defined. It is generally better for performance, as well. `log` does everything on the fly, and requires a **context** in every call.
> A _context_ is a way to group logs together into some kind of logical "area" of your application or library.
To be able to _view_ these logs, the correct environment variable must be specified.
### Displaying logs in the browser
To enable logging for a context in the browser, you can use something like the following:
```typescript
localStorage.debug = "app:*";
```
_Later:_
```typescript
import { createLog, log } from "gle";
const logContext = createLog("app:websocket");
logContext("connecting socket");
```
Which will display a log like the following in the browser's console:
```
app:websocket connecting socket +0ms
```
### Displaying logs in NodeJS
To enable logging for a context in a NodeJS app, set the `DEBUG` environment variable:
```bash
DEBUG=app:* node index.js
```
_Later, after building:_
```typescript
import { createLog, log } from "gle";
const logContext = createLog("app:db");
logContext("connecting database");
```
### Log flags
The debug environment value can be made up of several different types of patterns:
* A single context: `my-app:some:context`
* Multiple contexts: `app:core,app:net`
* A Negated context: `-app:test`
* A combination: `-app:test,app:init`
* Wild cards: `app:*`
* Multiple: `app:*,system:*`
* Anywhere: `app:test,system:*:core`
* Negated: `-system:*`