I have been working on a project with Next.js since last month and used the console.log statement in lots of components & files even though I d...
For further actions, you may consider blocking this person and/or reporting abuse
I do this too but without a plugin, I simply set an empty function for console.log on prod env.
beside console sometimes people also use alert to test something. In some of our webapps we disabled alert the same way like above.. (someone once pushed alert("curse word") on friday in production, it popped up when user did something special. We got interesting mails on monday... ;)
What about?
globalThis.console = { log: () => {} };
Wow Im newbie and wanna know how I can use this.
type just like normal console.log()?
Welcome! keep learning & chill 😎
What will happen when I use
console.info()
for example?Calling info() will cause an exception.
So a better approach would be to do the following if you are only interested in silencing console.log:
It's helpful you called this out.
That's annoying as hell for anyone developing downstream code (browser extensions etc.) to be compatible with your site/web app. Much better to use lint rules or an approach like the one mentioned in this article.
Suggestions are always welcome, keep it up. 👍
consol.log harming by the way when client assign her own function to grab information
with overwrite our cleaning in client side.
Just curiously, wouldn't that that prevent from errors beings logged if ever you're using something like Sentry or DataDog or NewRelic to log errors ?
nice! approach I'm gonna try it next time 👌
That’s nice and simple on Next.js.
On Angular I created a service for logging and the log level is set based on what environment you log too. I then like to use the linter to stop any uses of console.log in the code ( except in the service ) a good git hook running the lint then stops people from committing a console log in the code.
One advantage I get with this is based on the error the service can decide if it wants to send the log via REST API to an external service for monitoring.
And then y can check a session variable to either show or hide the logs on production is also possible. It will be very difficult in your minified code to find that needed session variable to set the log.level. Show default the loglevel “error” and not “ debug” and with the session variable set y can show all “debug” level logs
Oh! making something cool is very hard but you did it, hats off you man.
Hi! Why console.logs are a security risk?
Maybe for performance reasons? Like it runs on the main thread in the browser...
Performance may be a reason 🙄
Hey, Mirko! thanks for asking the question. Sometimes you need to console your environment variable values to check why it's undefined or not working, this may cause your credentials at risk.
Interesting 😊 thats the only thing that always worked for me 😂
😂
Great, now we can label all SSR code as a 'security risk'
Hey, I didn't mean that
But you said so.
console.log
can log everything the user can access in the Inspector.console.log
can only print unwanted credentials when the back-end provided them, there for you imply everything coming from the back-end is a security risk.Or saying console.log is a security risk is just stupid.
I strongly disagree. I didn't mean that at all. Here I just mentioned a situation ,how a user can put his/her credentials on risk.
That's nice trick, but It won't pass code review.
why?
Well it depends, some seniors don't even let you have a line of comment in code.
How about an ESLint rule for no console and a pre-commit hook?
This way, you don't need any ninja-hacks. You do your testing and remove them before the commit.
Hey Jakob, you are right! but If I say when your are too close to ship?
I don't think I'm following?
what do you mean? 🤔
Some may be thinking that why we are not allowed to use the console.log in the production plus some other development enviornemnt as well, so the answer is that if you are fetching a lot of data from Back-End and printing that data in the Front-End in any framework then it is quite possible that, that data will again some time to get printed at the console so due to this reason we should avoid printing direct data to the console.
The other thing that has been mentioned in this article is the security risk, this also put the application on the risk as well.
This plugin looks good but it is there is a need to communicate the need and usage of this plugin to the other members of the team as well. However, I appreciate that you have bring this matter of writing console log on the production deployed application. This is a critical thing to which only a few developers pay attention, more power to you and looking forward to see some important articles from your side. Good Luck.
Thanks for the detailed explanation & lovey wishes! 🤗
console.logs should just be used to bug check and afterwards removed. Don't leave it in the source code, especially not in big companies. You can maybe create a peek functionality in your utils, but that's that. Using build tools to remove code is just bad practice.
True 💯 but what do you mean by build tools to remove code ?
I prefer to create a custom logger wrapper/class and use it in app. In react apps as custom context/provider with hook to get logger instance in components.
Why? Several advantages:
"Checking every file, and deleting the statement is very time-consuming"
ESLint's rule to deny console logs + ignore them just in console logger implementation
Actually, while searching for the solution I had no idea about logger services so I solved it using the package. Yeah! thanks for the detailed solution ♥
I just add this code:
let testMode = true; // console log suppressed if false
if (!testMode) {console.log = function() {};} // to suppress console log
Could even use husky to setup custom git hooks for blocking a push or commit if linting fails
Nice trick! but what if you setup the rule late for you console.log ?
nice
Thanks, buddy!
Linting rules seem like a great solution for this.
I couldn't find something that's the reason I tried it but now lots of solutions are available in comments.
That's amazing
Thanks, Atul!
helpful
Thanks, Sakshi.
hi,your article is so good! Can I translate your artical and post to my wechat public account?
Sure, but don't forget to give me credits
Next time, I'm gonna surely try all these suggestions but this time I will continue it.
It means ESLint will autofix console.log from all files?
Nice trick! but what if you setup the rule late for you console.log ?
Eslint-nibble is also an amazing tool for visualizing linting categories & errors in the project. It should also be able to auto remove all console.logs
thanks for the suggestion!
Nice one, but we usually have some console.log in catch blocks of code. Linter will fail because of those as well
Ok
Thanks, Clary! I will keep posting cool & knowledgeable content.
you don't need a plugin, you can wrap it yourself: dev.to/ayyash/writing-a-wrapper-fo...