Detalhes do pacote

axios-logger

hg-pyun345.3kMIT2.8.1

Beautify Axios Logging Messages

javascript, nodejs, network, axios

readme (leia-me)

axios-logger

npm npm GitHub license CircleCI

Beautify Axios Logging Messages.

logo

When you send a request in nodejs, you need to show the log to the console. This library display the necessary information while communicating with the server.

Basically This package is working as Axios's interceptors.

sample

Install

$ npm install axios-logger --save-dev

How to use

You can use various loggers through the axios's interceptor API.

Logging Request

import axios from 'axios';
import * as AxiosLogger from 'axios-logger';

const instance = axios.create();
instance.interceptors.request.use(AxiosLogger.requestLogger);

If you want to use your own interceptor, you can compose(mixin) with requestLogger.

instance.interceptors.request.use((request) => {
    // write down your request intercept.
    return AxiosLogger.requestLogger(request);
});

Logging Response

import axios from 'axios';
import * as AxiosLogger from 'axios-logger';

const instance = axios.create();
instance.interceptors.response.use(AxiosLogger.responseLogger);

Also if you want to use your own interceptor, you can compose(mixin) with responseLogger.

instance.interceptors.response.use((response) => {
    // write down your response intercept.
    return AxiosLogger.responseLogger(response);
});

Error

You can inject errorLogger right after requestLogger or responseLogger.

import axios from 'axios';
import * as AxiosLogger from 'axios-logger';

const instance = axios.create();
instance.interceptors.request.use(AxiosLogger.requestLogger, AxiosLogger.errorLogger);
instance.interceptors.response.use(AxiosLogger.responseLogger, AxiosLogger.errorLogger);

Also if you want to use your own interceptor, you can compose(mixin) with errorLogger.

instance.interceptors.response.use(AxiosLogger.responseLogger, (err) => {
    // write down your error intercept.
    return AxiosLogger.errorLogger(err);
});

Configuration Settings

You can adjust several features as desired through configuration file. If you want to set config globally, using setGlobalConfig method.

setGlobalConfig({
    prefixText: 'your prefix',
    dateFormat: 'HH:MM:ss',
    status: false,
    headers: true,
    logger: someLogger.info.bind(this),
});

Or it can also be passed on as a second argument and applied locally. In this case, any property explicitly defined will override the global configuration.

instance.interceptors.request.use((request) => {
    // write down your request intercept.
    return AxiosLogger.requestLogger(request, {
        prefixText: 'your prefix',
        dateFormat: 'HH:MM:ss',
        status: false,
        headers: true,
        logger: someLogger.error.bind(this),
    });
});

Enable config list

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 boolean false Whether to include the URL params or not.
data boolean true Whether to include request/response data or not.
status boolean true Whether to include response statuses or not.
statusText boolean true Whether to include response status text or not.
headers boolean false Whether to include HTTP headers or not.
prefixText string \ false 'Axios' false => no prefix, otherwise, customize the prefix wanted.
dateFormat dateformat \ false false 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)

CONTRIBUTE

I always welcome Feedback and Pull Request :)

changelog (log de mudanças)

Change Log

2.8.1

  • fix: V2.8.0 Introduces incompatibilities with web and react native (#151)

2.8.0

  • fix: when baseURL contain path - add path to url string before relativePath (#149)

2.7.1

  • fix: use the updated typing for the request parameter of the request interceptor (#147)

2.7.0

  • fix: update typescript version (#131)
  • fix: update axios version (#124)
  • fix: update circle ci nodejs version 16

2.6.2

  • fix: not stringifying data if data logging is disabled (#114)

2.6.1

Fix minor some bugs.

  • 107

  • 108

  • 109

  • 110

  • 111

2.6.0

  • Add query params to log (#83)
  • Use baseUrl to display full URL (#97)

2.5.0

  • Enriched README with more information on how to specify the logger function to be used. (#66)
  • Add log config into error logger with a promise (#72) (#73)
  • Customizing logger function doesn't work, always uses global config logger (#75) (#76)
  • Remove lib folder (#77) (#78)
  • logger is a required but not actually used (#71)

2.4.0

  • Support more loggers (#53) (#62)
  • Placing HTTP method first, then the URL (#60) (#63)
  • Allow for no timestamp being appended (#64)
  • Explicitly set defaults in the code, as documented (#65)

2.3.1

  • Fix headers config typo
  • Add change log
  • Add contribute guide

2.3.0

  • Add default use options
  • Add Logo
  • Add some test cases

2.2.1

  • Add missing build files

2.2.0

  • Logging Header fields
  • Tweak updating README.md

2.1.0

  • Add Configuration

2.0.1

  • Add Circle CI
  • Update README.md
  • Change import style

As-Is

import AxiosLogger from 'axios-logger';

To-Be

import * as AxiosLogger from 'axios-logger';

2.0.0

  • Refactoring via typescript

1.0.0

  • First version release