{"_id":"logule","_rev":"61-42ef9e89fc75fb028d973276cef90f38","name":"logule","description":"A multi-transport, peer-dependent logging library","dist-tags":{"latest":"2.1.0"},"versions":{"0.1.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.1.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":"~0.4.12"},"dependencies":{"coffee-script":"~1.1.3","colors":"~0.5.1"},"devDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.1.0","_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e7d0da3627cc0e9df86d3fd2a6cffa61b6f5e62c","tarball":"https://registry.npmjs.org/logule/-/logule-0.1.0.tgz","integrity":"sha512-h0m1pYLfjui0wC83SqArRqApld6W6nqb8+VHi3zOAK9ZUJ1s+UPRpzR6sVyphJbjt39Rexhu0OPW6eKXCspRrA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu3Ys966lGB708HgtGdYYRa28pmO3BlEe6kpO/lyPsvAIhAKUf7bKLB5YVMKZQR5ZmmUzs5vkJgsF0c9yVgZh8nzYw"}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.1.1":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.1.1","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":">=0.4.10"},"dependencies":{"coffee-script":"~1.1.3","colors":"~0.5.1"},"devDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.1.1","_engineSupported":true,"_npmVersion":"1.0.103","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"8f213bdb85297707ccbafeb2bc07fca7c4ae6138","tarball":"https://registry.npmjs.org/logule/-/logule-0.1.1.tgz","integrity":"sha512-6jAvk9zGRt6sJaLgB9cgHirJ13xf+8mZC6WGrmjNJmQIrIvGAIT3JkcRjZipsftt71IYm1cv8JYFRbZh2Ymm2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5SM6FDaVJZPUkzazCd/Qndv4IyhphtBmPha5pxy3D/gIgYocvYIj9u7z3cqdidHBAaco6gy72A+x/OCtsmPNc7ek="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.2.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.2.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":">=0.4.10"},"dependencies":{"coffee-script":"~1.1.3","colors":"~0.5.1"},"devDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.2.0","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"b4098a7280f2390cd14c6b842896c721a42e6cc5","tarball":"https://registry.npmjs.org/logule/-/logule-0.2.0.tgz","integrity":"sha512-aqArdtLBYWs1rdTDQZITekAT5L3EHE+EqkKK/0vySbhE6XttqMm5D1cWPE2HNdvWYdHpFa/usyt/iIWeLJrMuA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGnBwaTSdoVnsOMcX3KcbMoaP3IE51tlPXr3VHlyzeeiAiAIIw8xhrlWfQyKcn3bTbxUKGcL+gIHMVHZCjenxfFeBA=="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.3.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.3.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":">=0.4.10"},"dependencies":{"coffee-script":"~1.1.3","colors":"~0.5.1"},"devDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.3.0","_engineSupported":true,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"89b17b806be70f1792069c5ceff01c7a44754f27","tarball":"https://registry.npmjs.org/logule/-/logule-0.3.0.tgz","integrity":"sha512-sy35+c1OIHnIrQ59yxTMot3D5kduqeZ/Z2R9LGXZQFyHJ0ktRNCBGprdKknmmkezXqAUaYc/8qU8B3fXkkwGow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCP5zDspjzOzipdhPZasi7urn+gknXGrb2auD5jy2hyxgIhAICf+f4WzwA2IKI1Q7i3HUYSOhwGE9b2ohGf7C24slYP"}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.4.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.4.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":">=0.4.10"},"dependencies":{"coffee-script":"~1.1.3","colors":"~0.5.1"},"devDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.4.0","_engineSupported":true,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"021e85908d1f5c56a7daa579db1a2a5476d645c7","tarball":"https://registry.npmjs.org/logule/-/logule-0.4.0.tgz","integrity":"sha512-BCQRNsMOC6p6QyGpLsJ+kNop1bvd9QjzRAflD0dI7nvaC9DAYXh/Plhq9IQ/8wbCmrc0If5XwH0xpKBIU3wI2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxCN/7vIX6DJbY3wVj0T2xKU/dBSp1VQBn/0zWYQ9dhQIhANU4fN17JvuVyI6jZKQW+KJSaoC/zKNm68vpD/I8MVgk"}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.4.1":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.4.1","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":">=0.4.10"},"scripts":{"test":"expresso"},"dependencies":{"coffee-script":"~1.1.3","colors":"~0.5.1"},"devDependencies":{"expresso":"~0.9.0"},"bugs":{"url":"http://github.com/clux/logule/issues"},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.4.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"02c9893ffb9abc9777cb25cc13d2e3c55a9b18bd","tarball":"https://registry.npmjs.org/logule/-/logule-0.4.1.tgz","integrity":"sha512-z8mbdrzIUD41SkcaX7gTQTjcf+nXwGqq0c7tMT+5Ra5qwb9lq7ribAWo++s7HHAkjztRJGMuilARpJceiaxCJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUF3axqwQyqsXlLAZd8COr2A4V+CrgNo3DP0UOxd0vuQIhAOYh6NhG0mJspPGPR/pRYvRD2vd4cVzUygyzhPMvnfzC"}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.5.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.5.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":">=0.4.10"},"scripts":{"test":"expresso"},"dependencies":{"coffee-script":"~1.1.3","colors":"~0.5.1"},"devDependencies":{"expresso":"~0.9.0"},"bugs":{"url":"http://github.com/clux/logule/issues"},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.5.0","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"bfb96eaf1ed82e837895ccab7f68800f2272d82e","tarball":"https://registry.npmjs.org/logule/-/logule-0.5.0.tgz","integrity":"sha512-iPcONNVxoYXCbfaAdDXHPVYP05KTjOHxOpsIZuNGEdLacKBbY+IDu3H/VONbrH5c1qsLm01LyIA8koI0O0CZIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAfDft4Ao830V/pO5drGg2JRdUmzGpp7hzLykeAMsjJ4AiBGNjcf1KHNYnT9K+SfIZdXGKp2XyXcJKVIAJpHjL53+A=="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.5.1":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.5.1","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":">=0.4.10"},"scripts":{"test":"expresso"},"dependencies":{"coffee-script":"~1.1.3","colors":"~0.5.1"},"devDependencies":{"expresso":"~0.9.0"},"bugs":{"url":"http://github.com/clux/logule/issues"},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.5.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"ba139e1051a11a3d30831b9fa9a41dc4ee4be7e3","tarball":"https://registry.npmjs.org/logule/-/logule-0.5.1.tgz","integrity":"sha512-quqMyIpQuw5BvbRg605Tgp7wjF3pqMv8bsE58nnDRKfv58HUoU4cXXd3LPpwp26f8bEQxD5GwMUhr9xoLMvJzQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzvHjyp2QFGB/Hr1Q/sjhE+Eqw/WdTWjOjH7yNsMnzgwIhAK6K8kaEtSmkK9gyM33VVw1A5pYv2X0o/dXw0BsLuJo1"}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.5.2":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.5.2","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":">=0.4.10"},"scripts":{"test":"expresso"},"dependencies":{"coffee-script":"~1.1.3","colors":"~0.5.1","semver":"~1.0.12"},"devDependencies":{"expresso":"~0.9.0"},"bugs":{"url":"http://github.com/clux/logule/issues"},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.5.2","_engineSupported":true,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"d38561e3efe50fe733bf2aa7fc5d007eb51a51a3","tarball":"https://registry.npmjs.org/logule/-/logule-0.5.2.tgz","integrity":"sha512-Ltkm7LyUPxZGseKgEPLNhkg3orr8TgFnIJQWGaNFRkb7poj7SF/IpXmtBq+rfkc2baMXXOqYnb7wpG+HFhSb7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+n1QivKh6SK3PUKz96G3FQ7h7PH10JbbKNDPzmT/knQIgdxGo75i1ip7A6gvpnCCeagRtQhDwKi/msgOCg4mpwF0="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.5.3":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.5.3","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"index.js","engines":{"node":">=0.4.10"},"scripts":{"test":"expresso"},"dependencies":{"colors":"~0.5.1","semver":"~1.0.12"},"devDependencies":{"coffee-script":"~1.1.3","expresso":"~0.9.0"},"bugs":{"url":"http://github.com/clux/logule/issues"},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.5.3","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.4","_defaultsLoaded":true,"dist":{"shasum":"0849b09762380521795c51f9450ed48ce110a261","tarball":"https://registry.npmjs.org/logule/-/logule-0.5.3.tgz","integrity":"sha512-g47W8rGBnRGu+nLHHt2sxv5IQTI9/l0Bzy5fYU1LHOFABv8al9LCLsMHjihg4j7gmcBjvJOf0IzxFbiuUVfRuw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTJH+M3aBg+wj2rFslJAfthc/XrVdkRbtgiTY3U5FKRAIgYxqCf0aryjGwJqu6GMyIrg9bKBc/vPd6oPss4ho90Tg="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.5.4":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.5.4","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.4.10"},"scripts":{"test":"expresso"},"dependencies":{"colors":"~0.5.1","semver":"~1.0.12"},"devDependencies":{"expresso":"~0.9.0"},"bugs":{"url":"http://github.com/clux/logule/issues"},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.5.4","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.4","_defaultsLoaded":true,"dist":{"shasum":"04c03317337f70323e0c5eae3b223993fa3ac3eb","tarball":"https://registry.npmjs.org/logule/-/logule-0.5.4.tgz","integrity":"sha512-V3EE5HeEPVqVcnMCtDvaU0rZTU/SvoSSaBuFYg6xyIOoBclfx1Pxd1iBjKVtirV6ZupNiK0HBUEYVQG90u/+YA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8KgekNQkN0cRH7Dhui4ckR4vcJuChNSNZT8ezabR+qAiEAlIkaHu0jl5y33a44JSo6I5aSPTeprbN1tS/Zf09m1GQ="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.5.5":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.5.5","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.4.10"},"scripts":{"test":"expresso"},"dependencies":{"colors":"~0.5.1","semver":"~1.0.12"},"devDependencies":{"expresso":"~0.9.0"},"bugs":{"url":"http://github.com/clux/logule/issues"},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.5.5","_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.4","_defaultsLoaded":true,"dist":{"shasum":"085d547bc9bc8d5943e71575bdd8bcf916111f6a","tarball":"https://registry.npmjs.org/logule/-/logule-0.5.5.tgz","integrity":"sha512-yKvSY0/U7N/MGNGJeybdc8lJ1UnGAkl6TiAj0onlV5XYP37G/0FB2H6lOyDooKx3K1ngsOz/r65nQKVpk88J+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQLGo+X6z4Y9/qgbsasGfxAi8IqMo5qBCl5KQJWb8yZAiAaY53FgA2pWV/S9ak9PFMvoNpWSoHZ6ies9+QpbLMosQ=="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.6.1":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced logger for nodejs","version":"0.6.1","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.6.0"},"scripts":{"test":"expresso"},"dependencies":{"colors":"~0.5.1","semver":"~1.0.13"},"devDependencies":{"expresso":"~0.9.2"},"bugs":{"url":"http://github.com/clux/logule/issues"},"optionalDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.6.1","_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"2d59a77721467b9cc9c05855a3881316fa59c6dc","tarball":"https://registry.npmjs.org/logule/-/logule-0.6.1.tgz","integrity":"sha512-9FgLG0zyythwu4fIncJ/xpvUolinlOzKH76sRMwQAfDLXY8EiCQK+eYhiNPB6Bd4Z4u4qggYNyT/sqGAWoG2Yw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA2NRfW7XtcHDa/uRR0XuPzkC0YhknN2C5Ou8wB8jOogAiAfaoiTHMwCIMJix7q/KBzgAByfw3EFSH97ddZJhnUEpw=="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.6.2":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"0.6.2","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.6.0"},"scripts":{"test":"tap ./test"},"dependencies":{"colors":"~0.5.1","semver":"~1.0.13"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"licence":"MIT","optionalDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.6.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"68c47be55c553a775ad4acb7cbfaeba7c5ca1d59","tarball":"https://registry.npmjs.org/logule/-/logule-0.6.2.tgz","integrity":"sha512-lsLLEivGrZKjSlX0VWP6/dAMmZ3zZEchJ+4Sqw2dIR+nsczvWfThCZltp6HAAkp68YyWomQqA7bkS+XQCz2L6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCz/JMtIsP6z5ASoDh29t0kQ4BtKHEWnYe3HGNPGsQ+WwIgZx9ACETAxL6tlbxpbXLZWZEaZaxYhZwTChC6+4HuE1A="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.7.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"0.7.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.6.0"},"scripts":{"test":"tap ./test"},"dependencies":{"colors":"~0.5.1","autonomy":"~0.2.0","subset":"~0.1.0","semver":"~1.0.13"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","optionalDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.7.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"2edc70ca9a1f66529b612c3165d399176642d001","tarball":"https://registry.npmjs.org/logule/-/logule-0.7.0.tgz","integrity":"sha512-cE82iUmexly2U4UL10M0X8qaON46I+HqRSLszHlEwEMf2uv9rSo7ITgl3bBqMU+W/1TYbtKMCfaksILDwbH/uA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGOr7moghBcX4W2mru2HUL8UNP9eY6ZPuK8bWSZ3U+43AiAc8D+itpLEuEFX2+ZIUjk5IxD/tSNazhxI+ZDWtaflVA=="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.8.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"0.8.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.6.0"},"scripts":{"test":"tap ./test"},"dependencies":{"colors":"~0.5.1","autonomy":"~0.2.0","subset":"~0.1.0","semver":"~1.0.13"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","optionalDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.8.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"429c4c2c965b64fbd69328b6555dd95dad6ef952","tarball":"https://registry.npmjs.org/logule/-/logule-0.8.0.tgz","integrity":"sha512-t+5Cg7mTcnle9NKT6mNioSGxvTJRrMOfwaLrsxaf32zDIxRVbDeeaX7bdosBjP5BvGrSWWtmIsMqnhbUFjJKTA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHWgD8gKA8tHPKMR7bW8GQKTeOU+L1Nh8L5JZtLYNNFCAiBWm52wCPcknLVhjHIVO3Ck2Gu7i8Dmkyf/Bzx8yziG4A=="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.8.1":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"0.8.1","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.6.0"},"scripts":{"test":"tap ./test"},"dependencies":{"colors":"~0.5.1","autonomy":"~0.2.0","subset":"~0.1.0","confortable":"~0.1.0","semver":"~1.0.13"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","optionalDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.8.1","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"fcb9b954caa182e491b585892edb896e7472ea26","tarball":"https://registry.npmjs.org/logule/-/logule-0.8.1.tgz","integrity":"sha512-YPvlqM1EMGZM6PuvrxXyIOEQ/vXXFpgJwntvulSSpgJhHJhy7dQlXxuExFkcOn4OLzMtzND/8hZeqSa8JrQWpQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGgKKhUPFJMKC7FGzYFy+E8k2v89WJ6kFxw2scPKwtifAiAzX1j2Jb9LO1mn3rO2MIsosM/nEy5nt284BPqhIvc4uw=="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.8.2":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"0.8.2","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.6.0"},"scripts":{"test":"tap ./test"},"dependencies":{"colors":"~0.5.1","autonomy":"~0.2.0","subset":"~0.1.0","confortable":"~0.1.3","semver":"~1.0.13"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","optionalDependencies":{},"_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"_id":"logule@0.8.2","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"23e2003c8ff0c2481829096b2541602e34511da7","tarball":"https://registry.npmjs.org/logule/-/logule-0.8.2.tgz","integrity":"sha512-jMQ7Iq8j907hvNyus/TU3tzbzdGzlmyklCculJqbr37t5jgrdMfAmHHW08cDhQmdE75Wy9qBIsUxxIwMTawE0A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSVcW2PcElO5b5QOClNLfoKfZRGMrLn4Ulp1OsQEqIQQIgQ6d6oCoVViN2N63GcFtblxMJmcHX8awTrZto7WGhyR8="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.9.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"0.9.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.6.0"},"scripts":{"test":"tap ./test"},"dependencies":{"colors":"~0.5.1","autonomy":"~0.2.0","subset":"~0.1.0","confortable":"~0.1.4","semver":"~1.0.13"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","optionalDependencies":{},"_id":"logule@0.9.0","dist":{"shasum":"4467be347c1b850cc62fc7faad0a2b19206318ba","tarball":"https://registry.npmjs.org/logule/-/logule-0.9.0.tgz","integrity":"sha512-Uwd1v/5YagY/8RnkwqPYTawD6vv/S4siVg9lLFLKbVoTHgV7i9pByvmVgMppB8YHXeKgToZ6nI3nvdOsnGN+cA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfbwf95BdveVeXSD1g/PqfBO4Qn0BCHBkj0Luh4F7UTQIhANBuUH2NyfF96UEL4fKs0UuCUMGC1gfoNw6Jif4mVdRJ"}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.9.1":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"0.9.1","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.6.0"},"scripts":{"test":"tap ./test"},"dependencies":{"colors":"~0.5.1","autonomy":"~0.2.0","subset":"~0.1.0","confortable":"~0.1.4","semver":"~1.0.13"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","optionalDependencies":{},"_id":"logule@0.9.1","dist":{"shasum":"f77bdddf7491947be2867e9d32126dfc08e10f00","tarball":"https://registry.npmjs.org/logule/-/logule-0.9.1.tgz","integrity":"sha512-ft6Mg01VNp0etV7V9zQlqO9bUm/Q8kN4H73hf35Id2TLNgPqny61OCePf3FJKKN36P9Wh1IgIrMJjL3M1sXy8Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyvnyMiJVOj/m+R61E3BvsRzItfOhz9sOoqloCY0uQpQIhAOV6pHXpUAWRpyfcMCD6mAZ9jZPWNqhwioXlNAVOrZr/"}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"1.0.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"1.0.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"logule.js","engines":{"node":">=0.6.0"},"scripts":{"test":"tap ./test"},"dependencies":{"colors":"~0.5.1","autonomy":"~0.2.0","subset":"~0.1.0","confortable":"~0.1.4"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","optionalDependencies":{},"_id":"logule@1.0.0","dist":{"shasum":"00d835bcba587096eb19e117cf010591412c4ec4","tarball":"https://registry.npmjs.org/logule/-/logule-1.0.0.tgz","integrity":"sha512-pFEBjPjqgO48JAF5hni4x6J3jnbSi7c4pFLfuS3t5V2toahxBQ3YxtBYtsEH7ZPaqZ4lbJds73uSIuHUr5VhuQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHyjcAuQ53cZCBcjB9fpNam4edGamfmJsx2GeyIPF2pLAiEAqxoRzNRruqebLDv4xN8WFljK/ff5L/2DKoSU7kZuJWs="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{},"deprecated":"serialization leaks + global dependency leaks from colors module fixed in 1.1.0"},"1.0.1":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"1.0.1","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"lib/logule.js","engines":{"node":">=0.6.0"},"keywords":["stdout","json","branch","filtration","configurable"],"scripts":{"test":"tap ./test"},"dependencies":{"colors":"~0.5.1","autonomy":"~0.3.0","subset":"~0.1.0","confortable":"~0.1.4"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","optionalDependencies":{},"_id":"logule@1.0.1","dist":{"shasum":"60d11be09875b6694749593c25022cd2e81290b3","tarball":"https://registry.npmjs.org/logule/-/logule-1.0.1.tgz","integrity":"sha512-CgnwgoNVdG6jXIclPJHUpJymCNkBVATowWaj3AZIIGAfc4fyxfbtXxySA584OILiSD3C82ymmjp+TT+9DkPBKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHFDittEsiamqMJdBnQZvT5NSDQFtTCIe+SjHlBE5RroAiBbG64n0wJKVItTWgGQA82GjU2wPYQUZGek+ceAuTmH1g=="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{},"deprecated":"serialization leaks + global dependency leaks from colors module fixed in 1.1.0"},"1.1.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"An advanced console logging library","version":"1.1.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"lib/logule.js","engines":{"node":">=0.6.0"},"keywords":["stdout","json","branch","filtration","configurable"],"scripts":{"test":"tap ./test"},"dependencies":{"dye":"~0.1.0","autonomy":"~0.3.0","subset":"~0.1.1","confortable":"~0.1.4"},"devDependencies":{"tap":"~0.2.5"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","optionalDependencies":{},"_id":"logule@1.1.0","dist":{"shasum":"8a064a56913977ec5de0fcb47d7e1c5125f8ae2c","tarball":"https://registry.npmjs.org/logule/-/logule-1.1.0.tgz","integrity":"sha512-6Hn260z0kTYxzGbOfN0oClxa6lzq40itMn1tXUhBeu/nonfAdNlXqr8mqvv2CzSkzxA6a86Z1QbFhotxSu9HIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjFGn+gERxUrBnKucFKxWGdKVbj8pq8RFFXAKiB+JSIwIgSRMddV4KDiiqVPLO5rIabtqPDdWzAtbq8lqf+51NpGw="}]},"_npmVersion":"1.1.62","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"2.0.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"A multi-transport, peer-dependent logging library","version":"2.0.0","repository":{"type":"git","url":"git://github.com/clux/logule.git"},"main":"lib/logule.js","engines":{"node":">=0.8"},"keywords":["stdout","emitter","json","file","branch","filtration","configurable"],"scripts":{"test":"tap ./test"},"dependencies":{"dye":"~0.1.0","autonomy":"~0.5","subset":"~0.1.3","confortable":"~0.2.0","typr":"~0.2.0"},"devDependencies":{"tap":"~0.3.1"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","_id":"logule@2.0.0","dist":{"shasum":"b5580055837be82e780c278433f83e4906e7f74a","tarball":"https://registry.npmjs.org/logule/-/logule-2.0.0.tgz","integrity":"sha512-RhVcsQHeV028/o3wIKIA3AAQbMaePcVmkjAIHXGI1jLNzXZWRRdVUEaeOSE2s0Gdq34wAg4JdCHJaAwt827RHg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmkVDVA4uv1EIZxtSkcAJb2oPCun8oJaencClPKqPVtwIhAPVQUSzuOtDt+xPRsMsr8jdtpOcki0JcBRsPkvhYrtKj"}]},"_npmVersion":"1.1.63","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}]},"2.0.1":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"A multi-transport, peer-dependent logging library","version":"2.0.1","stability":"stable","repository":{"type":"git","url":"https://github.com/clux/logule"},"keywords":["stdout","emitter","json","file","branch","filtration","configurable"],"main":"index.js","scripts":{"test":"./test.sh verbose","instrument":"jscoverage lib","coverage":"LOGULE_COV=1 ./test.sh lcov","coveralls":"npm run coverage | coveralls"},"dependencies":{"dye":"~0.1.0","autonomy":"~0.5","subset":"~0.1.3","confortable":"~0.2.0","typr":"~0.2.0"},"devDependencies":{"nodeunit":"^0.9.0","jscoverage":"^0.5.5","coveralls":"^2.11.1"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","gitHead":"565b514cad6fc01350160075c66f961bb63a449d","homepage":"https://github.com/clux/logule","_id":"logule@2.0.1","_shasum":"dc5aa4023dadda4272029499ea76f40322457dfb","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"dist":{"shasum":"dc5aa4023dadda4272029499ea76f40322457dfb","tarball":"https://registry.npmjs.org/logule/-/logule-2.0.1.tgz","integrity":"sha512-6d4qzkfv7PzrK3KGKp17hcoHcVsfF/lM57XEKO7ByH+QWMPrzh8LWsAMtSl04WvRGIVSpJG1WJQMw98upmVL7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCU9uQhYL2jCJnZJeB5ebQR0Xxlv6xszJjE05FdF7QlngIgPj2rZZzohQSaNtOZo/NGM4elO4XIrioQG0hvalEjdgU="}]}},"2.1.0":{"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"name":"logule","description":"A multi-transport, peer-dependent logging library","version":"2.1.0","stability":"stable","repository":{"type":"git","url":"git+https://github.com/clux/logule.git"},"keywords":["stdout","emitter","json","file","branch","filtration","configurable"],"main":"index.js","scripts":{"test":"./test.sh verbose","precoverage":"jscoverage lib","coverage":"LOGULE_COV=1 ./test.sh lcov","coveralls":"npm run coverage | coveralls"},"dependencies":{"dye":"~0.1.0","autonomy":"~0.5","subset":"~0.1.3","confortable":"~0.2.0","typr":"~0.2.0"},"devDependencies":{"nodeunit":"^0.9.0","jscoverage":"^0.5.5","coveralls":"^2.11.1"},"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","gitHead":"54f3724d902de2191ffa82602fe06b3a41ea85ed","homepage":"https://github.com/clux/logule#readme","_id":"logule@2.1.0","_shasum":"dd6f7479357bbbbadc090e572ef775cb31bee3bc","_from":".","_npmVersion":"2.11.1","_nodeVersion":"2.2.1","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"dist":{"shasum":"dd6f7479357bbbbadc090e572ef775cb31bee3bc","tarball":"https://registry.npmjs.org/logule/-/logule-2.1.0.tgz","integrity":"sha512-NkVw41/F53OhcMF3SvIyVmFx6/eSrzgZsUict76vxzfjuM6WdaQSvYTHeC3BpWXJOaloKj2mLP5gMGjzoMAqfA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAREE1+XJIoSKDW6sMSo2hrXN78K81HDrg3ZsYcjDd0QIgSqYmzrEtaw2prfAvmcJvhDE1KrRJpi4z9ivhif7ByxE="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}]}},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"time":{"modified":"2022-06-19T14:00:43.904Z","created":"2011-11-24T10:33:57.751Z","0.1.0":"2011-11-24T10:33:59.237Z","0.1.1":"2011-11-24T11:13:49.053Z","0.2.0":"2011-11-24T21:49:01.029Z","0.3.0":"2011-11-26T08:26:29.620Z","0.4.0":"2011-11-27T12:42:08.421Z","0.4.1":"2011-11-27T18:37:23.363Z","0.5.0":"2011-11-27T20:02:44.927Z","0.5.1":"2011-11-27T22:08:35.528Z","0.5.2":"2011-12-01T07:56:57.445Z","0.5.3":"2011-12-06T19:42:31.613Z","0.5.4":"2011-12-13T11:47:18.830Z","0.5.5":"2011-12-23T20:58:30.832Z","0.6.1":"2012-02-25T13:06:05.188Z","0.6.2":"2012-06-25T18:46:17.619Z","0.7.0":"2012-06-30T15:47:36.763Z","0.8.0":"2012-07-02T20:31:59.143Z","0.8.1":"2012-07-03T21:52:44.293Z","0.8.2":"2012-07-18T18:16:08.209Z","0.9.0":"2012-08-25T07:33:08.034Z","0.9.1":"2012-09-15T08:50:15.851Z","1.0.0":"2012-09-29T17:59:56.868Z","1.0.1":"2012-10-02T20:20:57.783Z","1.1.0":"2012-10-06T16:48:45.147Z","2.0.0":"2012-11-14T09:26:15.390Z","2.0.1":"2014-07-24T20:50:31.941Z","2.1.0":"2015-08-24T18:09:21.203Z"},"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/clux/logule.git"},"users":{"dylanf":true,"scotttesler":true},"readme":"# Logule\n[![npm status](http://img.shields.io/npm/v/logule.svg)](https://www.npmjs.org/package/logule)\n[![build status](https://secure.travis-ci.org/clux/logule.svg)](http://travis-ci.org/clux/logule)\n[![dependency status](https://david-dm.org/clux/logule.svg)](https://david-dm.org/clux/logule)\n[![coverage status](http://img.shields.io/coveralls/clux/logule.svg)](https://coveralls.io/r/clux/logule)\n[![stable](http://img.shields.io/badge/stability-stable-74C614.svg)](http://nodejs.org/api/documentation.html#documentation_stability_index)\n\nLogule is a pretty, but heavily configurable logging utility for nodejs. It allows multiple transports as well as being configurable per user, per app and per module via localized config files.\n\n![simple output!](https://github.com/clux/logule/raw/master/imgs/outputsimple.png)\n\n## Key Design Goal\nLogging is a simple yet deceptively hairy problem. You don't want foreign modules to spam your app with needless messages, but you also want them to say something if you are passing down invalid arguments. You want logs to look pretty, but you also want a consistent style.\n\nWhat you really want, is not simply configurability, but a *hierarchy of configurability and suppression*. You want to be able to:\n\n- Mute specific log levels globablly\n- Mute non-fatal info from certain branches of code\n- Mute chatty modules\n- Unmute new/experimental modules during development\n\nas well as being able to configure *how* your:\n\n- module logs by default\n- app logs by default (perhaps overriding individual module defaults)\n- apps log by default (by providing sensible overall configs)\n\nManipulating these settings should be super easy, as it's most useful during development and debug sessions where time is of the essence.\n\nFinally, you should be able to get trace/debug messages from a module that's not behaving correctly, without spamming people not using logule!\n\nLogule strives to adhere these goals and beyond that has since 1.0  maintained a stable API. Features so far has been greatly improved via issues/pull requests contributions, so please follow this path if there is anything you feel deserves attention.\n\n## Index\n\n* [Basic Usage](#basic-usage)\n* [Namespaces](#namespaces)\n* [Subs](#subs)\n* [Logging Methods](#logging-methods)\n  * [debug()](#debug)\n  * [line()](#line)\n  * [trace()](#trace)\n  * [info()](#info)\n  * [warn()](#warn)\n  * [error()](#error)\n  * [zalgo()](#zalgo)\n  * [get()](#getlevel--namespace)\n* [Mute API](#mute-api)\n  * [mute()](#mute)\n  * [unmute()](#unmute)\n  * [muteOnly()](#muteonly)\n  * [unmuteOnly()](#unmuteonly)\n* [Configuration](#configuration)\n  * [Transports](#transports)\n    * [stdout](#stdout)\n    * [Emitter](#emitter)\n    * [Filestream](#filestream)\n  * [Style & Formatting](#style--formatting)\n  * [Timestamps](#timestamps)\n  * [Global Suppression](#global-suppression)\n* [Branch Based Filtration](#branch-based-filtration)\n  * [Filtering Branches](#filtering-branches)\n  * [Muting Chatty Modules](#muting-chatty-modules)\n  * [Unmuting New Modules](#unmuting-new-modules)\n* [Colors](#colors)\n* [npm Usage](#npm-usage)\n* [Installation](#installation)\n* [Running Tests](#running-tests)\n* [License](#license)\n\n## Basic Usage\nFile scope usage; pass down the `module` object at the start.\n\n```js\nvar log = require('logule').init(module);\nlog.error(\"this is an error message\")\nlog.warn(\"<- heed this\")\nlog.info(\"info %s %d %j\", \"message\", 1, {a: 2})\nlog.debug(\"this message has to be turned on\");\n```\n\n![simple output!](https://github.com/clux/logule/raw/master/imgs/outputsimple.png)\n\n## Namespaces\nTo add a namespace to this module, add a second parameter to `init()`.\n\n```js\nlog = require('logule').init(module, 'BUILD');\nlog.trace(\"Trying to compile client.js\");\nlog.error(\"Failed\");\n```\n\n**Namespaces inherit from the call tree in order of registration.** If your entry point required the 'BUILD' module, and this has a namespace, then 'BUILD' becomes the next namespace in the chain. When printing to `stdout` there's a default limit of nesting printed out of 3.\n\n![one namespace output!](https://github.com/clux/logule/raw/master/imgs/output.png)\n\nIn this case, the entry point that required 'BUILD' had no namespace. See [Filtering Branches](#filtering-branches) for a more detailed example of how namespaces nest.\n\n## Subs\nSubs are copies of logger instances that do not save settings to the call tree.\nThis allows you to have muted/unmuted logger instances inside a particular file without inadvertently muting or unmuting levels (resp.) from dependent modules.\n\n```js\nvar log = require('logule').init(module, 'myFile');\nvar spammy = log.sub('spammy').unmute('trace');\n// pass spammy logger to external/internal code\n```\n\nA `log.sub()` will maintain the the original namespaces and mute settings of `log` as well as config suppressions (so unmute does not override config `suppress`). It can also optionally append one extra namespace to the ones existing, in this case, 'external' will be appended.\n\nSee [Filtering Branches](#filtering-branches) for a more detailed example of how subs are used.\n\n## Logging Methods\nThere are 7 log levels (and one method getter) available available on `log`:\n\n### debug()\nFor debug info to help out during bad times. Suppressed by default, safe to leave in.\n\n### line()\nFor temporary debug messages that you sprinkle liberally throughout your nasty functions.\nPrepends filename.js:lineNum to the message.\nNote these fetch new stacks at each call and are not meant to be used in production. They are always shown in the default config, so don't leave these in code.\n\n```js\nvar log = require('logule').init(module, 'broken');\nlog.debug('dumping lines to console');\nlog.line();\nlog.line();\n```\n\n![line output!](https://github.com/clux/logule/raw/master/imgs/line.png)\n\n### trace()\nFor info messages that are too common to see all the time. Suppressed by default, safe to leave in.\n\n### info()\nFor messages that show events/standard progressions.\nThese will be shown by default in any module you embed logule in when installed on a new box (i.e. without a custom config).\nEnsure you're not talking when you should not need to - consider `trace.\n\n### warn()\nFor warnings. Shown by default.\n\n### error()\nFor errors. Shown by default in bold. Not meant to handle Error objects, just the logging please.\n\n### zalgo()\n[H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ](https://github.com/clux/dye#zalgo)\n\n```js\nlog.zalgo('core melting')\n```\n\n![zalgo output!](https://github.com/clux/logule/raw/master/imgs/zalgo.png)\n\nDisclaimer; this is mostly for fun. Find your own use case or suppress it. Note that zalgolization is only applied to stdout, not to the `filestream` or `emitter` transports.\n\n\n### get(level [, namespace])\nLevels can be retrieved as single functions that do not chain by using this method.\nUseful if you have a debug module that only needs `log.debug`, so you can pass down a perhaps namespaced function to it.\n\n```js\nvar dbg = log.get('debug');\ndbg(\"works like log.debug - but this function does not chain and expose other methods\");\n```\n\nNote that `get()` result obeys the mute API and config suppression entirely like the individual level methods.\n\n*Warning:* while you simulate this with `log.debug.bind(log)`, this would chain and allow modules to break out of the constricted environment.\n\n## Mute API\nThese methods are shortcuts for modifying the private list of muted levels.\nMuting affects by default `stdout` and `filestream`, but the config allows changing this to any combination of transports being affected.\n\n### mute()\nSuppress logs for passed in methods.\n\n```js\nlog.mute('warn', 'info');\nlog.info('muted').warn('muted').error('works');\n```\n\n### unmute()\nUnmutes logs for passed in methods.\n\n```js\nlog.mute('warn');\nvar l2 = log.sub('forModuleX').unmute('warn', 'info');\nlog.warn('muted');\nl2.warn('works!');\n```\n\nNB: unmute does not override config suppression. It has lower precedence.\n\n### muteOnly()\nA convenience for muting all levels passed in, and unmuting all others.\n\n```js\nlog.muteOnly('debug', 'trace'); // unmutes everything except trace & debug\nlog.muteOnly(); // muteOnly nothing === unmute everything\n```\n\n### unmuteOnly()\nA convenience for unmuting all levels passed in, and muting the others.\n\n```js\nlog.unmuteOnly('error'); // mutes everything except error\nlog.unmuteOnly(); // unmuteOnly nothing === mute everything\n```\n\n## Configuration\nConfiguration of colors, style, date formatting, transports, setting mutability and global suppression levels are done via config files. The [default configuration file](https://github.com/clux/logule/blob/master/.logule.json) results in output looking like the images herein.\n\nConfigs are located via the [confortable](https://github.com/clux/confortable) module. This module performs priority based config searches. In particular, it is used here with the following path priorities:\n\n- 1. execution directory\n- 2a). if (`execDir` outside `$HOME`) `$HOME`\n- 2b). if (`execDir` inside  `$HOME`) Up to and including `$HOME` in `..` increments\n- 3. directory of `module.parent`\n\nStep 3 enables modules to bundle their own default config which can be overriden by apps by utilizing step 2.\n\nThe found config file is merged one level deep with the default config, so you don't have to include more in your config than what you disagree with.\n\n### Transports\nLogule supports 3 transports: `stdout`, `filestream` and `emitter`.\nThese all have similar options in the config, but by default only `stdout` is enabled.\n\n**NB: Logule does not strip colors.** If you log pre-colored strings, those colors will show up in the other transports as well!\n\nAll transports have the following options:\n\n- `suppress`  - list of levels to globally suppress from the transport\n- `mutable`   - a boolean to indicate whether the mute API affects the transport\n- `timestamp` - an object/string to indicate timesta\n\n#### stdout\nAll logs are by default written directly to `process.stdout`\n\n#### Emitter\nIf `emitter` has an `enabled` attribute set to `true`, logule will expose an `EventEmitter` instance on `require('logule').stream`.\n\nThen you can listen to `\"log\"` events:\n\n```js\nvar logule = require('logule');\nvar e = logule.emitter;\nvar log = logule.init(module);\ne.on('log', function (obj) {\n  // plain replacement logging\n  console.log(obj.time.valueOf() + ' - ' + obj.level + ' - ' + obj.message);\n});\n```\nThe types of the keys in `obj` are as follows:\n\n```js\n{\n  time : Date,\n  level: String,\n  namespaces : [String],\n  message : String\n}\n```\n\nIn the case of level being `'line'`, a `line` key is also available with the short location identifier string `line()` typically outputs.\n\n#### Filestream\nIf `filestream` has a `file` attribute filled in (with a cwd relative path), this file will be appended to with JSON log messages (one message per line - so JSON.parse forEach line in file.split('\\n') will work).\n\nBy default the individual JSON messages use the current format:\n\n```js\n{\n  \"time\": \"2012-11-08T11:08:25.092Z\",\n  \"level\": \"error\",\n  \"namespaces\": [\"build\"],\n  \"message\": \"message part, without stdout formatting\"\n}\n```\n\nWhere the `time` value may differ depending on the `timestamp` config option.\n\nNB: A `\"line\"` key is present if level is `\"line\"` like in the EventEmitter.\n\n### Style & Formatting\nThe [first four blocks](https://github.com/clux/logule/blob/master/.logule.json#L2-22) in the default config describes the default style set used by the `stdout` transport and are all of the form `levelName : fn` where `fn` is any function in the module [dye](https://github.com/clux/dye). Functions can even be composed by delimiting them with a dot; e.g. `bold.blue`.\n\nThe `delimiters` object contains the subtle default styling of the delimiters joining the optional timestamp, the log level, the optional namespaces and the message.\n\nThe `levels` object contain the styling for the log levels. By default we only apply `bold` to the critical messages.\n\nThe `messages` object contain styling fot the messages (i.e. the result of `util.format(args..)`). By default only zalgo gets message level formatting.\n\nThe `colors` object contain the misc. styling used:\n\n- `namespace` - the default blue namespaces\n- `timestamp` - the default grey optional timestamp\n- `callsite`  - the default green file.js:line prefix added by .line()\n\n\nNB: Levels already listed in the `delimiters`, `levels` or `messages` objects, can be disabled by overriding them in your personal/module's config with the value of `\"none\"`.\n\n### Timestamps\nTimestamps can be configured via the \"timestamp\" key in the config which is overloaded as follows:\n\n- `\"none\"`     - nothing prepended; log output starts at type, e.g. the `INFO` part\n- `precision`  - prepends HH:MM:SS:MSS + delimiter via above + padded `getMilliseconds`\n- `dateMethod` - prepends the result of any custom method on `Date.prototype`\n- `object`     - full customization mode\n\nExample of using the custom mode:\n\n```js\n\"timestamp\": {\n  \"date\"      : true,\n  \"reverse\"   : false,\n  \"delimiter\" : \"-\",\n  \"precise\"   : false\n}\n```\n\nThis prepends the date, in the form YYYY-MM-DD (i.e. normal non-reversed european style), and adds the timestamp after the date without precision (i.e. just `toLocaleTimeString`).\n\nMost sensible methods on `Date.prototype` are:\n\n- `toJSON` - default for file\n- `valueOf`\n- `toLocaleTimeString` - default for stdout\n- `toGMTString`\n\nNote that the first two can be perfectly serialized/deserialized with `Date.parse` and are thusly a good format for the filestream JSON transport.\n\n### Global Suppression\nSet the `suppress` flag to globally turn all listed log methods into chaining no-ops.\nAlternatively list the exceptions under `allow` instead if you like to suppress most levels.\nSee the [Branch based filtration](#branch-based-filtration) section for more granular control.\nBy default, `trace` and `debug` messages are suppressed.\n\n\n## Branch Based Filtration\nControlling global levels is done via config files, but the levels not globally suppressed therein can temporarily muted/unmuted at any branch point and these settings will propagate down the call tree.\n\n**NB: The following techniques require your disired transport(s) to be `mutable` in the config.**\n\n### Filtering Branches\nTo get the most out of call tree filtration consider the following example of an application structure:\n\n```\na.js\n└──┬b.js\n   └───c.js\n```\n\nWhen just using mute/unmute on an instance returned directly by `init()` logule will remember the call tree and apply the same rules to the ones further down the tree by default:\n\n```js\n// a.js\nvar l = require('logule').init(module, 'app').mute('info');\nvar b = require('./b');\n\n// b.js\nvar l = require('logule').init(module);\nvar c = require('./c');\nl.info('muted');\nl.unmute('info');\nl.info('works');\n\n// c.js\nvar l = require('logule').init(module, 'leaf');\nl.info('works');\n```\n\nWith the following code, `a.js` sets the an app default of _no info messages_, which is overridden by `b.js`, so the unmute propagates to `c.js`. Note that the `app` namespace set in `a.js` propagates down to both `b.js` and `c.js`, but `c.js` will show two namespaces: `app` and `leaf` provided the config setting `nesting >= 2`.\n\nNote that any `mute`/`unmute` calls to a `sub()` does not propagate to other files:\n\n```js\n// a.js as above\n// b.js\nvar l = require('logule').init(module).sub().unmute('info');\nl.info('works');\n\n// c.js\nvar l = require('logule').init(module);\nl.info('still muted');\n```\n\nIn short tree based log levels is the safe, *overridable version* of log levels.\nTo enforce strict suppression of certain levels, the config file is the way to go.\n\n### Muting Chatty Modules\nSay you want to mute warnings in the file `c.js` above. If you own the file, you easily just edit the first line to be:\n\n```js\n// c.js\nvar l = require('logule').init(module).mute('warn', 'info');\n```\n\nHowever, if you don't own the file, perhaps it's deep down in the npm hierarchy for instance, you can propagate more simply from `b.js`.\n\n```js\n// b.js\nvar l = require('logule').init(module).mute('warn', 'info').sub().unmute('warn', 'info');\nvar c = require('./c');\nl.warn('unmuted, but down the call tree it is muted');\n```\n\nHere we mute main logger from `b.js` (the one from `init`), but unmute a `sub` that will be used inside this file to preserve the same behaviour inside `b.js` only.\n\n### Unmuting New Modules\nEssentially the reverse process of [Muting chatty modules](#muting-chatty-modules), there are two cases, you own the file c.js (modify imports line to mute it):\n\n```js\n// c.js\nvar l = require('logule').init(module, 'leaf').unmute('info');\nl.info('works');\n```\n\nOr if you don't own the file (so unmute above in the hierarchy):\n\n```js\n// b.js\nvar l = require('logule').init(module).unmute('info').sub().mute('info');\nl.info('works');\n```\n\nThis preserves muting of `b.js`, but opens up for its descendants.\n\n## Colors\nThe ASNI color code wrapping and zalgolizer is provided by [dye](https://github.com/clux/dye), which does not introduce implicit global dependencies on `String.prototype`.\n\n## npm Usage\nLogging is a\nPublished libraries that log should not depend on a logging library directly\nWhen logging with `logule >=2`, the practice is to put `logule` inside `package.json` `peerDependencies` and NOT the normal `dependencies`. This ensures all modules use the same code and thus logule can encapsulate everything needed to process ALL the logs an application uses. Logule's API is stable, so simply restricting to `\"logule\": \"~2\"` will suffice.\n\nIn `\"logule\": \"~1\"`, bundling of separate copies per npm module was the standard and so logule then adopted the method of communicating with other copies via `process.logule` to compensate for not having any one central piece of code where all logs went through. Ultimately, decisions were being made on behalf of the config so this worked well.\n\n## Installation\n\n```bash\n$ npm install logule\n```\n\n## Running tests\nInstall development dependencies\n\n```bash\n$ npm install\n```\n\nRun the tests\n\n```bash\n$ npm test\n```\n\n## License\nMIT-Licensed. See LICENSE file for details.\n","homepage":"https://github.com/clux/logule#readme","keywords":["stdout","emitter","json","file","branch","filtration","configurable"],"bugs":{"url":"http://github.com/clux/logule/issues"},"license":"MIT","readmeFilename":"README.md"}