Cowlog is not for production code, as it might cause performance issues. However, the tool provides detailed information about where from you called it from, so you can locate and remove after debugging. It gives you the stack trace. All the log messages per process to a separate file and many more things.
Cowlog is the product of the vidaxl.com engineering efforts. Helps you to debug your backend javascript code with less cognitive effort. It is a library that helps you identify your debug message quickly on the console output. Having it's own domain-specific language regarding the logging procedures, it's behaviour can be altered through the use of them. The project supports at the moment only the NodeJs environment.
We want cowlog to be usable in any circumstances without problems therefore we have close 100% code coverage, but at least 90%.
-
Server-side applications tend to pollute the console still sometimes you want to use console.log, and not solely use the amazing debug mode --inspect of the NodeJs.
-
CowLog can help you refactor your code faster. Our aim is that the code would run on most node.js environment now we support node >= 7.6.4.
np## Installation
npm install cowlog --save-devrequire('cowlog)()
This will reigister the global variable l this is a function that you an chain to i's DSL functions
so the mostbasic usage is
l('your', 'stuffs')()
You will see all information with cowlog, no need to have specially trained eye for development log messages, or particular identifiable strings, before and after you want to look at.
-
session log: Every you call cowlog, the results appear in a separate file.
-
called from: It is the exact place where you placed cowlog, so you can remove it with ease, after you have inspected the variables in the runtime.
The "stack trace" will help you, it sticks with cowlog.
The output looks like this:
____________________________________________________________________________________________________
/ \
| 0 Beginnig ------- |
| "abcz" |
| 0 End ------- |
| |
| 1 Beginnig ------- |
| { |
| a: "A", |
| "embeded.level1.level2.c": null, |
| "embeded.level1.level2.c2": "cc", |
| "embeded.level1.level2.array.0.a": "a", |
| "embeded.level1.level2.array.0.b": "b", |
| "embeded.level1.level2.array.1": 1, |
| "embeded.level1.level2.array.2": 1, |
| "embeded.level1.level2.array.3": 3, |
| "embeded.level1.level2.array.4": 7, |
| "embeded.level1.level2.testObject2.c": 1, |
| "embeded.level1.level2.testObject2.fn": function (a, b) { |
| return a + b |
| }, |
| "embeded.level1.b": "1.5" |
| } |
| 1 End ------- |
| |
| 2 Beginnig ------- |
| "This is a very long text. Indeed, it has to be long enough to be able to |
| present how awesomely it breaks the strings so that you will have a conven |
| ient reading experience through your logs." |
| 2 End ------- |
| |
| _-_-_-_-_-_-_-_-_-_-_-_ |
| |
| called from:/home/it/dev/misc/dsl-toolkit/packages/dsl-toolkit/node_modules/bottlejs/dist/bottle.js:205:89 |
| stack trace:/tmp/dsl-toolkit/hashes/1a/aca79320ae42540da2a83d1d1c7b6d_stack-trace.log |
| session log:/tmp/dsl-toolkit/hashes/b6/cda5f0931f0f85054b0f59b0d5e749_session.log |
\ logged at:2018-06-20T20:54:17.782Z /
----------------------------------------------------------------------------------------------------
\
\
.::!!!!!!!:.
.!!!!!:. .:!!!!!!!!!!!!
~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
:$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
$$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
$$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
"*$bd$$$$ '*$$$$$$$$$$$o+#"
"""" """""""
If you don't have a global variable registered to l (cowlog.log) than cowlog will register them, so you can reach it from anywhere. I know it is against all good practice, but don't forget to remove it after you finished your development session.
Joe is dead here.
Just once please! lodash#once
Just like in the lodash#throttle documentation
Just like in the lodashe#debounce documentation
Collects these logs and displays if the application exits.
Pretty much like the previous, it makes sure only this last call will be shown at the end.
Mutes the output. This can be convinient in some cases.
Will print only the keys for object type aruments. here ["a", "b"]
Here the test variable's value will e 1 so it returns the last variale's value.
The rainbowmabic of lolcat is activated
For instance typing
l('your stuffs').once.throttle(2000)()
is legit. Once it prints the output other than this it throttles it as well.
Will do the same taht the upper one, but no output, can be useful for debugging.
In the future, we will add a production feature to the software, but that needs some pressure from the community, and meanwhile, we have more meaningful things to implement.
This document is part of the Cowlog project.