@future-widget-lab/logger
Version:
A good enough logger for client-side oriented applications.
119 lines (86 loc) âĸ 4.14 kB
Markdown
# @future-widget-lab/logger
An opinionated but minimal logger built on top of `loglevel`. It allows you to define custom log levels, emojis for different log types, and control debug level logs based on URL search parameters.
## Features
- Custom log levels and message formatting.
- Debug logging controlled by URL search parameters.
- Fine-grained control over debug visibility using tags.
- Emoji support for different log types.
- Optional side effects after a message is printed.
## Installation
```bash
npm install @future-widget-lab/logger
```
## Usage
### Basic Example
```typescript
import { createLogger } from '@future-widget-lab/logger';
const logger = createLogger({
level: 'info'
});
logger.info({}, 'Application started');
logger.error({ errorCode: 500 }, 'Internal server error');
```
### Debugging
To enable debug logs for a specific tag, add the corresponding search parameter to the URL.
```typescript
const logger = createLogger({
level: 'debug',
allTag: 'all',
debugSearchParameterName: 'debug'
});
logger.debug('auth-module', { user: 'test' }, 'Authentication successful');
```
To see the debug logs, navigate to:
```
http://example.com/?debug=auth-module
```
Or use the catch-all tag:
```
http://example.com/?debug=all
```
### Customizing Log Emojis
```typescript
const logger = createLogger({
level: 'info',
debugEmoji: 'đ',
errorEmoji: 'â',
infoEmoji: 'âšī¸',
traceEmoji: 'đ',
warnEmoji: 'â ī¸'
});
```
### Handling Log Side Effects
You can perform custom actions after a log message is printed by using the `onAfterMessage` option. The logger handles formatting, while `onAfterMessage` can trigger side effects such as API calls.
```typescript
const logger = createLogger({
level: 'info',
onAfterMessage: ({ level, timestamp, payload, message }) => {
sendLogToAnalytics({ level, timestamp, payload, message });
}
});
```
## API Reference
### `createLogger(options: CreateLoggerOptions)`
Creates a new logger instance with the specified configuration options.
#### Options
| Option | Type | Default | Description |
| -------------------------- | -------------- | --------------- | ------------------------------------------------------------- |
| `level` | `LogLevelDesc` | | Sets the default log level. |
| `allTag` | `string` | `'all'` | Catch-all tag for debug logs. |
| `debugSearchParameterName` | `string` | `'debug'` | Name of the search parameter for debug logs. |
| `shouldDebug` | `ShouldDebug` | Internal Helper | Custom function to determine if debug logs should be printed. |
| `debugEmoji` | `string` | `'đĩ'` | Emoji for debug logs. |
| `errorEmoji` | `string` | `'đ'` | Emoji for error logs. |
| `infoEmoji` | `string` | `'đ'` | Emoji for info logs. |
| `traceEmoji` | `string` | `'đ'` | Emoji for trace logs. |
| `warnEmoji` | `string` | `'đ'` | Emoji for warn logs. |
| `onMessage` | `function` | `undefined` | Custom message formatting handler. |
| `onAfterMessage` | `function` | `undefined` | Side-effect handler after logging. |
#### Methods
- `debug(tag: string, object: object, message: string)`: Logs a debug message.
- `error(object: object, message: string)`: Logs an error message.
- `info(object: object, message: string)`: Logs an informational message.
- `trace(object: object, message: string)`: Logs a trace message.
- `warn(object: object, message?: string)`: Logs a warning message.
## License
MIT