@gcoreplus/axios-logger
is a axios interceptor that can log the request/response data displaying the necessary information while communicating with the server.
Inspired by the axios-logger
Install the main lib
npm install --save @gcoreplus/axios-logger
import axios from 'axios';
import * as AxiosLogger from '@gcoreplus/axios-logger';
const instance = axios.create();
instance.interceptors.request.use(AxiosLogger.requestLogger, AxiosLogger.errorLogger);
instance.interceptors.response.use(AxiosLogger.responseLogger, AxiosLogger.errorLogger);
Custom request/error output logger sample
const instance = axios.create();
instance.interceptors.request.use(
(request) => AxiosLogger.requestLogger(request, { logger: console.log }),
(error) => AxiosLogger.errorLogger(error, { logger: console.error })
);
Custom output logger builder sample
import * as AxiosLogger from '@gcoreplus/axios-logger';
AxiosLogger.setGlobalConfig({
logger: console.log,
createLoggerBuilder: config => new ObjectLoggerBuilder(config)
});
Property | Type | Default | Description |
---|---|---|---|
method |
boolean | true |
Whether to include HTTP method or not. |
url |
boolean | true |
Whether to include the URL or not. |
params.apply |
boolean | true |
Whether to include HTTP params or not. |
params.redact |
RedactOptions | undefined |
Whether to filter restrict data from params object before print. |
data.apply |
boolean | true |
Whether to include request/response data or not. |
data.redact |
RedactOptions | undefined |
Whether to filter restrict data from data object before print. |
headers.apply |
boolean | false |
Whether to include HTTP headers or not. |
headers.redact |
RedactOptions | undefined |
Whether to filter restrict data from headers object before print. |
status |
boolean | true |
Whether to include response statuses or not. |
prefixText |
string | false
|
'Axios' |
false => no prefix, otherwise, customize the prefix wanted. |
dateFormat |
dateformat | false
|
new Date().toISOString() |
false => no timestamp, otherwise, customize its format |
logger |
function<string, any> | console.log |
Allows users to customize the logger function to be used. e.g. Winston's logger.info could be leveraged, like this: logger.info.bind(this)
|
createLoggerBuilder |
function => LoggerBuilder | new StringLoggerBuilder(config) |
Allows to customize the logger output. Possible values, new StringLoggerBuilder(config) and new ObjectLoggerBuilder(config)
|
@gcoreplus/axios-logger
uses fast-redact to handle restrict data
For more information see fast-redact and redact documentation
Redact configuration example
import * as AxiosLogger from '@gcoreplus/axios-logger';
AxiosLogger.setGlobalConfig({
headers: {
apply: true,
redact: {
paths: ['["my-token"]', 'cookie'],
censor: '***'
}
}
});
Distributed under the ISC License. See LICENSE
for more information.
Copyright © 2020 gCorePlus Inc.