Skip to content

Instantly share code, notes, and snippets.

@motebaya
Created October 4, 2023 09:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save motebaya/ca73d39c33803c4d8f8e00bf2aba3421 to your computer and use it in GitHub Desktop.
Save motebaya/ca73d39c33803c4d8f8e00bf2aba3421 to your computer and use it in GitHub Desktop.
axios client logger with winston & axios-logger
import axios from "axios";
import winston from "winston";
import * as AxiosLogger from "axios-logger";
// https://github.com/winstonjs/winston#formats
const logger = winston.createLogger({
level: "debug",
format: winston.format.combine(
winston.format.colorize(),
winston.format.timestamp({ format: "HH:mm:ss" }),
winston.format.printf(({ level, message, timestamp }) => {
return `[${timestamp}] ${level}::${message}`;
})
),
transports: [
new winston.transports.Console(),
new winston.transports.Http({ level: "debug" }),
],
});
// https://github.com/hg-pyun/axios-logger#enable-config-list
AxiosLogger.setGlobalConfig({
prefixText: false,
status: true,
params: true,
headers: true,
data: false,
logger: logger.debug.bind(this),
});
const client = axios.create();
client.interceptors.request.use(
AxiosLogger.requestLogger,
AxiosLogger.errorLogger
);
client.interceptors.response.use(
AxiosLogger.responseLogger,
AxiosLogger.errorLogger
);
client.get("https://getpino.io/#/docs/pretty").then((rs) => {
console.log(`Response Length: ${rs.data.length}`);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment