https://github.com/gravity-ui/ui-logger
https://github.com/gravity-ui/ui-logger
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/gravity-ui/ui-logger
- Owner: gravity-ui
- License: mit
- Created: 2022-07-28T10:56:36.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-04-02T00:34:18.000Z (about 2 years ago)
- Last Synced: 2025-03-01T10:38:10.637Z (over 1 year ago)
- Language: TypeScript
- Size: 254 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING
- License: LICENSE
Awesome Lists containing this project
README
# UI logger
## Usage
```bash
npm i @gravity-ui/ui-logger
```
```ts
import logger from '@gravity-ui/ui-logger';
try {
// logger.log(message: string, extraData?: Record);
logger.log('Info event', {extraInfo: 'Extra data'});
} catch (error) {
// logger.logError(message: string, error?: Error, extraData?: Record);
logger.logError('Error event', error, {extraError: 'Extra data'});
}
// get all recorded logs
const logs = logger.getLogs();
```
## Named loggers
By default, logs are written to `namespace` with the name `default`.
Possible reasons to create your own `namespace`:
- Logically split logs of a large application.
- For certain errors, you need a custom [error parser](#settings).
```ts
import logger from '@gravity-ui/ui-logger';
// Returns or creates a new logger instance with the name my_namespace
const namedLogger = logger.get('my_namespace');
namedLogger.log('Will record to scope my_namespace');
const anotherOneLogger = namedLogger.get('another_one');
namedLogger.log('Will record to scope another_one');
```
## Settings
The settings can be either global for all loggers or local for a specific logger.
```ts
import logger from '@gravity-ui/ui-logger';
type DefaultSettings = {
// The number of log records for each namespace. By default, 1000.
bufferSize: number;
// Function for error parsing in logError.
parseError: (error: Error) => Record;
// Print log, logError to the console. By default, true.
printLog: boolean;
// Callback function that is called every time logError is called with the same arguments as logError
logErrorCallback: ((message: string, error?: Error, data?: ExtraData) => void) | null;
};
// will change the number of records for all loggers
logger.setDefault({bufferSize: 200});
type LoggerSettings = {
bufferSize: number;
parseError: (error: Error) => Record;
logErrorCallback: ((message: string, error?: Error, data?: ExtraData) => void) | null;
};
const namedLogger = logger.get('name');
function namedParseError(error: Error) {
return {message: error.message, meta: {}};
}
// will change ParseError only for logger `name`
namedLogger.setSettings({parseError: namedParseError});
```