I have many console.log
(or any other console calls) in my code and I would like to use them only
when my app is in some kind of "debug mode".
I can't seem to use some kind of logger function and internally use console.log
because then I wouldn't know what line fired it. Maybe only with a try/catch, but my logs are very general and I don't want try/catch in my code.
What would you recommend?
One more way to disable console.log in production and keep it in development.
You can change your development settings like localhost and port.
This code works for me:
This Tiny wrapper override will wrap the original
console.log
method with a function that has a check inside it, which you can control from the outside, deepening if you want to see console logs and not.I chose
window.allowConsole
just as an example flag but in real-life use it would probably be something else. depending on your framework.Usage:
This override should be implement as "high" as possible in the code hierarchy so it would "catch" all logs before then happen. This could be expanded to all the other
console
methods such aswarn
,time
,dir
and so on.Just replace the console.log with an empty function for production.
I would probably abuse the short-circuiting nature of JavaScript's logical AND operator and replace instances of:
With:
Assuming
DEBUG
is a global variable that evaluates totrue
if debugging is enabled.This strategy avoids neutering
console.log()
, so you can still call it in release mode if you really have to (e.g. to trace an issue that doesn't occur in debug mode).