MorganJS is easy to install and works nicely out of the box.
{[.old-setup | 1.hilite(=javascript=) ]}
Here is what it looks like. Highlighted HTTP status codes are quite useful.
Thankfully, it’s possible to customize MorganJS by adding tokens, which are template symbols, like this:
{[ .current-user | 1.hilite(=javascript=) ]}
which can be later used like this:
{[ .middle-setup | 1.hilite(=javascript=) ]}
to produce something like this:
Uh-oh!! Where are my colors?
I delve into MorganJS code…
{[ .morgan | 1.hilite(=javascript=) ]}
As you may have noticed, the above code is hard to understand and quite hard-coded too.
- Hard-coded because, even if the ´dev´ template is documented as ´:method :url :status :response-time ms – :res[content-length]´, it’s really embedded into the code and mixed up with extraneous bits rather than being declared into some option and used like any other MorganJS template is.
- Hard to understand because the function object is being used as a cache for its own executions which entail a compilation step whose raison d’être I still have to grasp. I could be wrong, but this one could be a clear example of over-engineering.
However my biggest disappointment was that there is no way of reusing the colored ´:status´ token nor the coloring functionality, neither directly, by calling a method, nor indirectly, by copy-pasting some code. A total fail. 🙁
Googling “terminal colors” I eventually got to this Unix StackExchange answer, which I used to write this:
{[ .color-factory | 1.hilite(=javascript=) ]}
A nice collateral about my ´ColorFactory´ function is that I can use it also in the console like this:
{[ .console-log | 1.hilite(=javascript=) ]}
to get something like this:
Finally, I was able to customize Morgan with this:
{[ .morgan-factory | 1.hilite(=javascript=) ]}
and use it like this:
{[ .new-setup | 1.hilite(=javascript=) ]}
to get something like this: