Skip to content

Instantly share code, notes, and snippets.

@codemile
Created April 21, 2021 12:52
Show Gist options
  • Select an option

  • Save codemile/c2a13137a08d5f285b1feb88d017bf91 to your computer and use it in GitHub Desktop.

Select an option

Save codemile/c2a13137a08d5f285b1feb88d017bf91 to your computer and use it in GitHub Desktop.
A simple logging hook for React
import {useMemo} from 'react';
/**
* Prevents React.DOM from replacing methods inside hooks.
*/
const ref = {
log: console.log,
error: console.error,
debug: console.debug
};
/**
* Global logger accessible from Redux/Thunk and services.
*/
export const logger = (prefix: string, name: string = 'log') => {
const func = ref[name] || console[name];
return func.bind(console, `${prefix}:`);
};
export const loggerDebug = (prefix: string) => logger(prefix, 'debug');
export const loggerError = (prefix: string) => logger(prefix, 'error');
export const useLogger = (prefix: string, name: string = 'log') => {
return useMemo(() => logger(prefix, name), [prefix, name]);
};
export const useDebugger = (prefix: string) => {
return useMemo(() => loggerDebug(prefix), [prefix]);
};
export const useError = (prefix: string) => {
return useMemo(() => loggerError(prefix), [prefix]);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment