Debug Output To File
The debug package build to work both in node and the browser has been around quite some time and is lovely to work with. Unfortunately, sometimes it can be to much of a good thing. Working with gatsby
recently and I needed to debug my component shadowing. gastby
makes heavy use of the debug
package which is handy to peer into the internal work that is happening.
You can see the component shadowing happening by using:
DEBUG=gatsby:component-shadowing gatsby build
Unfortunately this blows out my terminal and I can’t scroll up to the beginning of the logs. It also isn’t readily searchable either. The easiest solution is to pipe this into a file (when using bash) by:
DEBUG=gatsby:component-shadowing gatsby build > build-log.txt
This works fine for the output from gastby
proper as it logs to STDOUT
. By default, debug
logs to STDERR
though. These are two different streams of data. We can make use of shell redirection though to make this work. STDOUT
lives on stream 1, and STDERR
lives on stream 2. Using 1> build-log.txt
we would pipe stream 1 into that .txt
file. Using 2>&1
, we can pipe stream 2 into stream 1. Putting this all together and we can pipe everything into a log file that is now complete and searchable. 🎉
DEBUG=gatsby:component-shadowing gatsby build 1> build-log.txt 2>&1