import { Meta, ArgTypes } from '@storybook/blocks';
import { LoggerProvider } from '../';
# LoggerProvider
The `LoggerProvider` takes in a class implementing [Logger](https://aws.github.io/amazon-chime-sdk-js/interfaces/logger.html) interface from Amazon Chime SDK for JavaScript as a required `prop` and provides it to
children components wrapped under `LoggerProvider`.
Children components can use `useLogger` custom hook which returns the `logger` object for logging.
This custom hook provides [`ConsoleLogger`](https://aws.github.io/amazon-chime-sdk-js/classes/consolelogger.html) as the default logger, if not overriden by `LoggerProvider` `logger` prop.
## Props
## Importing
```jsx
import { LoggerProvider, useLogger } from 'amazon-chime-sdk-component-library-react';
```
## Usage
You have to explicitly use the `LoggerProvider` if you want to provide a custom `Logger` for logging in your app.
The `amazon-chime-sdk-component-library-react` will use this same custom logger for logging.
If you do not use `LoggerProvider`, `useLogger` will just provide the `ConsoleLogger` as the default logger.
### Using single `LoggerProvider`
```jsx
import React from 'react';
import { POSTLogger, LogLevel } from 'amazon-chime-sdk-js';
import { LoggerProvider, useLogger } from 'amazon-chime-sdk-component-library-react';
const postLogger = new POSTLogger({
url: 'URL to POST logs',
LogLevel.INFO,
metadata: {
appName: 'ChimeComponentLibraryReactDemo',
},
});
const App = () => (
);
const MyComponent1 = () => {
// logger is a POSTLogger object.
const logger = useLogger();
logger.info('info');
logger.error('error');
logger.warn('warn');
logger.debug('debug');
return null;
};
const MyComponent2 = () => {
// logger is a ConsoleLogger object.
const logger = useLogger();
logger.info('info');
logger.error('error');
logger.warn('warn');
logger.debug('debug');
return null;
};
```
### Using multiple `LoggerProvider`'s
```jsx
import React from 'react';
import { POSTLogger, LogLevel } from 'amazon-chime-sdk-js';
import { LoggerProvider, useLogger } from 'amazon-chime-sdk-component-library-react';
const meetingPOSTLogger = new POSTLogger({
url: 'URL to POST logs',
LogLevel.INFO,
metadata: {
appName: 'ChimeComponentLibraryReactDemo-Meeting',
},
});
const chatPOSTLogger = new POSTLogger({
url: 'URL to POST logs',
LogLevel.INFO,
metadata: {
appName: 'ChimeComponentLibraryReactDemo-Chat',
},
});
const App = () => (
);
const MyMeetingComponent = () => {
// logger is a meetingPOSTLogger object.
const logger = useLogger();
logger.info('info');
logger.error('error');
logger.warn('warn');
logger.debug('debug');
return null;
};
const MyChatComponent = () => {
// logger is a chatPOSTLogger object.
const logger = useLogger();
logger.info('info');
logger.error('error');
logger.warn('warn');
logger.debug('debug');
return null;
};
```