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