{"_id":"log-errors","_rev":"39-c2c493982f2fc7d22e723bb746ee5752","name":"log-errors","description":"environment aware error logger that can easily be plugged into express.js","dist-tags":{"latest":"4.1.0"},"versions":{"0.1.1":{"name":"log-errors","version":"0.1.1","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. request url (req.url)\n5. request query (req.query)\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@0.1.1","dist":{"shasum":"9d8e87f4aa084d4cc1fa34b4b1f911b6c587dcc8","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-0.1.1.tgz","integrity":"sha512-VubxxhRXVb8nBi1tOD8rJ55q0p8sUUzAHBTdBTZFBbtuNVENFZ4fCLdvsNlPP7KZydA5hPb8Xhui/hmgVVFR/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpfXVktBAyrkHmNNUviR+OvyVaGUtvxFE9j65GJuBwVAiEAt1VXyJUGVOKsH31gN7BY4bxWBmHNbtdqKqoElcEt7Fs="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"0.1.2":{"name":"log-errors","version":"0.1.2","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. request url (req.url)\n5. request query (req.query)\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@0.1.2","dist":{"shasum":"26e9e904e826dbdbc1675c5b7aa4e480c452fd22","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-0.1.2.tgz","integrity":"sha512-khyZ0pBlA032ED3Cw5IPmjHbyWSIo+fa4b6cYIyeH8l4aUQNxmY9+lxt04p8lYCpsj0XzNTOpoDZCdo83hMZWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICE/R/+JfCwvEOtTQp+odTbYr+tCjDfDs/FEJOz25Q0IAiEA99F2KBsEAPYmpVitGgiShxY01CuNeYca1kcLpZadRyk="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"1.0.0":{"name":"log-errors","version":"1.0.0","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. request url (req.url)\n5. request query (req.query)\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@1.0.0","dist":{"shasum":"7a073fa1c7ff6fd74afc177fd98cde44847b28a6","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-1.0.0.tgz","integrity":"sha512-e+8KSWwsaGs5uV+aO0SXywYaUOiKVGmKO2fDN2aXh2a6sMxbQk5gJh9AUkaeo927eIy27s4cBxPwyNfvx0q4Ng==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB16vtNc2OEchyaN9gUrPCIXAhQAGE5beQaW3pWYTRpqAiBaXgC3D9xqx0N17DpdMd6jEBu34AtdHyMu6NZ2lqA5OQ=="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"1.0.1":{"name":"log-errors","version":"1.0.1","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@1.0.1","dist":{"shasum":"317a95bbbd1180c96fd21feef04fff58abc8c899","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-1.0.1.tgz","integrity":"sha512-3dHsw1QFGvOznf38AklXwyggG5/IZ7pqGt3dgPWQh47RJFjCnWwK/5ddx8V9YVAA4xPCVIWkW1+YBEUtm254uQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBAbbBTi0+u+N+NBapGIfhCu21Rc5QKmILJj0q+gLqyHAiAc9cIKs+BoziUe7ARLuDCge67hv16WaMt/y5EQFOfhSg=="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"1.1.0":{"name":"log-errors","version":"1.1.0","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@1.1.0","dist":{"shasum":"1736a05b899ec85ebc8cefe17ee1afe94d727e6f","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-1.1.0.tgz","integrity":"sha512-isgtBgUhY/lj4sfcgBJoqsH8xofqh4i2X9YE7cGeCnFvE26r+SIyIAQfuTUrhcjaNfPJ9IZ2ZQdIkNXyJNck2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoduc29A5qrmQpKRdecxHIXShaC9oKFZIy23qxilkWewIgVxHz9Nub9F2CkUm3r+q6vyWrLdw1ivOc4su157drM8k="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"2.0.0":{"name":"log-errors","version":"2.0.0","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@2.0.0","dist":{"shasum":"71dc479d37fb09a1107e77073d13fb67fe1e8947","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-2.0.0.tgz","integrity":"sha512-mlUKhorfAwkMHdlhk5qduGFABoCJwOZexQrpRhTtMgiKG1Dwdob5a6RXj2t9KicVSCTOia7nVfw1l5K3jYuDbA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd8E3HOrF5WSNYMejXfY2cLg87xiGXy5sO2vibklZtxgIgdb+0S9ws2aqPs9TQhuZMF8bx+/O4ujV9iHasZKlc6H8="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"2.0.1":{"name":"log-errors","version":"2.0.1","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["log","logger","express logger","log errors","errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@2.0.1","dist":{"shasum":"e170dbdbd06094d474bad82ee70d60d1a336d7d7","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-2.0.1.tgz","integrity":"sha512-92CGN5AsF2/+p1VUX7npMjakprtZ9EmdUpUbwZDmJ2PeWnBE/er2SkctICOxCjkD84bHpwl6vmP3ni2HWfF58g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfgbKCSSWGDW6jsRKSPsQdF6Qjtl7l69cBvf8RVhPnoAIgB8ee5JkXVLiUt/NzUeBRtrejqhk1JJc9RlA63hWRDXY="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"2.0.2":{"name":"log-errors","version":"2.0.2","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["log","logger","express logger","log errors","errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@2.0.2","dist":{"shasum":"38426714fa708f233cc752661f6ae3d3c6da2c12","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-2.0.2.tgz","integrity":"sha512-NlJaB5b4rK7xP7FfW5nuoG9V2l7+oiNZSp/3MSrHJ3QHhjHWB5EJHBN8SgN/vbS+RFJlk7OAGvLrti6uo8bieQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDa/qqHRXkBOJRhd+xDEwGFW0331m6u13fLJkJ+TY7skgIhAPzsAvQP4ZusDZbtQrYuzNVd3SZwIwL2nQ/EGVERp2pD"}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"3.0.0":{"name":"log-errors","version":"3.0.0","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["log","logger","express logger","log errors","errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@3.0.0","dist":{"shasum":"4475ee26f955bbc185aa31bf0cbefbced34a5a7b","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-3.0.0.tgz","integrity":"sha512-fIK5q5/doRgHuRX9mfe81rKEBLRVVcjG229eHd985Op8YpbUaeqcJqNqhEmxQxFkq0KZaFAylifZMrc+9zGsVw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD55vrkGhejlxZjze1mhK9mYnHQCqb3hn2gtDoBAUSMIAIgNn45r91+FloIkr2lGwfVcZrEI+CHfgqDPjvSOk1XASc="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"3.1.0":{"name":"log-errors","version":"3.1.0","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["log","logger","express logger","log errors","errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@3.1.0","dist":{"shasum":"b2154e4c80848b4b561d5872270179aa4b6d25b8","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-3.1.0.tgz","integrity":"sha512-ew81blcBIbmrqq5RmsgtFm/Ir+9sR4MSFgtoQdtA4r/SWh1R/azIjr8HQA0PEM9TbrzwsSWVWNnblU5JfqiomQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDGWrr7JZ3AnfZw0B3sSfpFhb1jfuT7YQx/memepmgrPAiEAjuNazGnXa4MLUyKL7kxT8Y9BXPJKhJcdcS04HQRsTic="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"3.2.0":{"name":"log-errors","version":"3.2.0","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["log","logger","express logger","log errors","errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@3.2.0","dist":{"shasum":"40a684f6d63a871693cecff30665bdfecb9dd7e7","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-3.2.0.tgz","integrity":"sha512-UbVcGLkmvBENP3BPILKOzxIOzcbKjcxAX0Zo0MP7ESL66vCs9p+BCtvte1ZC/S+m/eFGBtSMMxOE1r5FXC6Xeg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGwodzFLOcuKjPLstEl0K+0XitB7RePQmMQmKLl6REnJAiBIqM7lTCEGWI7g9uVaZZtZ4Lewpk4XWJl4CKiIZHorKQ=="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"3.3.0":{"name":"log-errors","version":"3.3.0","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["log","logger","express logger","log errors","errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@3.3.0","dist":{"shasum":"5c4e58ae597a0a39c9844d329fed92da90eb221e","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-3.3.0.tgz","integrity":"sha512-wJptNWbxEl0MBP8FjJ6q2xMXZusCupkeEfcbw5GX/XMdxFBI1QzYIZzZuBu844kj/VDWtP2OULyBpn8cFn2hsQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9koZQTfZoFb/oD66sOKydmbD54idyAG6bpKZmWKxp0wIhAO0B8vESdeQGQgO4pSMjHklFmLJ91zRHN4VnEa5/eFz/"}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"3.4.0":{"name":"log-errors","version":"3.4.0","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["log","logger","express logger","log errors","errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"~0.4.1"},"dependencies":{"underscore":"~1.4.4","log":"~1.3.1"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Base Log Class\n- Production and development loggers inherit from this.\n- If app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n\n```JavaScript\nvar LogClass = function (env, app) {\n    this.env = env;\n    this.app = app;\n};\n```\n\n\n### Development Logger\n- Always prints full error in colored text.\n\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\n- Will only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency']\n\n```JavaScript\nvar logProd = require('log-errors').production,\n    err     = newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n\n#### 'seriousError' Evt\n- If error.LogLevel is 3 or below and this.app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n- It will NOT be broadcast if the error.doNotKill is truthy\n\n```JavaScript\n    if (!err.doNotKill) {\n      appErrorHandler && this.app.emit('seriousError');\n    }\n```\n\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@3.4.0","dist":{"shasum":"0f31cd3b757e4c94ded5b4f9b03311291531f50f","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-3.4.0.tgz","integrity":"sha512-VHheUc8BAlzj5aAY2FMvniO3p1MhJj3Ww1LsHlY2Of2JUoBAysGAmLrHAx9N32V8re8TEdRmtd9W/PtVUqJj3w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDChHadVdY3bF7po8EDMtaAZdKWHYzgnQtvIaeSLOKK3QIgN0Kt1WgxKaAqxtufJYu/FhJSdMsfBgjQ9EtKFY+dHO8="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"3.4.1":{"name":"log-errors","version":"3.4.1","description":"environment aware error logger that can easily be plugged into express.js","main":"index.js","scripts":{"test":"tap ./test"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"keywords":["log","logger","express logger","log errors","errors"],"author":{"name":"andrew griffiths"},"license":"BSD","devDependencies":{"tap":"0.4.x"},"dependencies":{"underscore":"1.4.x","log":"1.3.x"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Base Log Class\n- Production and development loggers inherit from this.\n- If app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n\n```JavaScript\nvar LogClass = function (env, app) {\n    this.env = env;\n    this.app = app;\n};\n```\n\n\n### Development Logger\n- Always prints full error in colored text.\n\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\n- Will only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency']\n\n```JavaScript\nvar logProd = require('log-errors').production,\n    err     = newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n\n#### 'seriousError' Evt\n- If error.LogLevel is 3 or below and this.app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n- It will NOT be broadcast if the error.doNotKill is truthy\n\n```JavaScript\n    if (!err.doNotKill) {\n      appErrorHandler && this.app.emit('seriousError');\n    }\n```\n\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","readmeFilename":"README.md","_id":"log-errors@3.4.1","dist":{"shasum":"757002351c44f5a685d464220767ad32781df065","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-3.4.1.tgz","integrity":"sha512-1xOohuEN5YHSzpctAA09i78Or1Ac3swgh3STebkcpsVxW5PRDZT5T8tn7sdwCtinBODSoJAujt6Pu/efYtY3/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEmaMQxRtp/8IzxwVtmRSK7UNeJMNtuzSSC71LOznhfgIgPCC5n/CZpppGYthHaBrSDhd8MdYi/9qcdryge//3v+k="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"3.4.2":{"name":"log-errors","version":"3.4.2","license":"BSD","description":"environment aware error logger that can easily be plugged into express.js","tags":["log","logger","express","expressjs","express-log","log-errors","errors"],"author":{"name":"Andrew Griffiths","email":"mail@andrewgriffithsonline.com"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"engines":["node >= 0.6.0"],"main":"index.js","scripts":{"test":"tap ./test"},"dependencies":{"underscore":">=1.4","log":">=1.4.0"},"devDependencies":{"tap":">=0.4"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Base Log Class\n- Production and development loggers inherit from this.\n- If app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n\n```JavaScript\nvar LogClass = function (env, app) {\n    this.env = env;\n    this.app = app;\n};\n```\n\n\n### Development Logger\n- Always prints full error in colored text.\n\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\n- Will only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency']\n\n```JavaScript\nvar logProd = require('log-errors').production,\n    err     = newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n\n#### 'seriousError' Evt\n- If error.LogLevel is 3 or below and this.app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n- It will NOT be broadcast if the error.doNotKill is truthy\n\n```JavaScript\n    if (!err.doNotKill) {\n      appErrorHandler && this.app.emit('seriousError');\n    }\n```\n\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","_id":"log-errors@3.4.2","dist":{"shasum":"6202b3f806a63a784225f61bb1623066dd52ad42","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-3.4.2.tgz","integrity":"sha512-ylvsfAWBHPiOjsMHwww1hRc4wc9DICCIIVq1kivhC/FfPdA0JqN7rgaX85LVAztzMIRYKzGD5yLTcrdBCYcLfA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCpT4Z4iapEaAkzIVfH42B4NowGPjiLpBQqcGRmG+ZnAIgHZwfJhWNGCowG99plcxFRVqinOKXm8x6g6yrWm3Zido="}]},"_npmVersion":"1.1.61","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"4.0.0":{"name":"log-errors","version":"4.0.0","license":"BSD","description":"environment aware error logger that can easily be plugged into express.js","tags":["log","logger","express","expressjs","express-log","log-errors","errors"],"author":{"name":"Andrew Griffiths","email":"mail@andrewgriffithsonline.com"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"engines":["node >= 0.6.0"],"main":"index.js","scripts":{"test":"tap ./test"},"dependencies":{"underscore":">=1.4","log":">=1.4.0"},"devDependencies":{"tap":">=0.4"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Base Log Class\n- Production and development loggers inherit from this.\n- If app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n\n```JavaScript\nvar LogClass = function (env, app) {\n    this.env = env;\n    this.app = app;\n};\n```\n\n\n### Development Logger\n- Always prints full error in colored text.\n\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\n- Will only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency']\n\n```JavaScript\nvar logProd = require('log-errors').production,\n    err     = newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n\n#### 'seriousError' Evt\n- If error.LogLevel is 3 or below and this.app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n- It will NOT be broadcast if the error.doNotKill is truthy\n\n```JavaScript\n    if (!err.doNotKill) {\n      appErrorHandler && this.app.emit('seriousError');\n    }\n```\n\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","_id":"log-errors@4.0.0","dist":{"shasum":"85b2d282f5af849ffcd163d2a541cf7b7685a0c4","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-4.0.0.tgz","integrity":"sha512-RvEShjO2p2PFdpJbQlvWXqOvMUJmedW5Qn0kazB5fNksVzqoC2soGd6O3v2dJl6F3gAbCU1mN2J7gL0FtcXB2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICifKE94A8Q0fH9/Okx1C1NOHJm4noHQrTJMHxLTclDDAiAXrO6Q2nFal+7A8kmHHnq5mVTMK6l0Xe+Ts+yYm/x0Vw=="}]},"_npmVersion":"1.1.61","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"4.0.1":{"name":"log-errors","version":"4.0.1","license":"BSD","description":"environment aware error logger that can easily be plugged into express.js","tags":["log","logger","express","expressjs","express-log","log-errors","errors"],"author":{"name":"Andrew Griffiths","email":"mail@andrewgriffithsonline.com"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"engines":["node >= 0.6.0"],"main":"index.js","scripts":{"test":"tap ./test"},"dependencies":{"underscore":">=1.4","log":">=1.4.0"},"devDependencies":{"tap":">=0.4"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Base Log Class\n- Production and development loggers inherit from this.\n- If app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n\n```JavaScript\nvar LogClass = function (env, app) {\n    this.env = env;\n    this.app = app;\n};\n```\n\n\n### Development Logger\n- Always prints full error in colored text.\n\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\n- Will only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency']\n\n```JavaScript\nvar logProd = require('log-errors').production,\n    err     = newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n\n#### 'seriousError' Evt\n- If error.LogLevel is 3 or below and this.app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n- It will NOT be broadcast if the error.doNotKill is truthy\n\n```JavaScript\n    if (!err.doNotKill) {\n      appErrorHandler && this.app.emit('seriousError');\n    }\n```\n\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","_id":"log-errors@4.0.1","dist":{"shasum":"a6f88f4990731afbecdf35865495c5cab4f28114","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-4.0.1.tgz","integrity":"sha512-+yHxU0Fcbih391CXWA3vzJGHpXisxoVf6OYr4OflpBzIe7J50srB2AEgsfeoa9Z+FqhuDN7VyqeZEgAvLaK2xQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9jQjuEkWlnvDNPjjm6gVgGYGE3/sK4C/OGLpswrU6XgIhANBDN4FB1B4pYcDSNQ7sp+U01TFDZ8VoLWtBmDjopds/"}]},"_npmVersion":"1.1.61","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]},"4.1.0":{"name":"log-errors","version":"4.1.0","license":"BSD","description":"environment aware error logger that can easily be plugged into express.js","tags":["log","logger","express","expressjs","express-log","log-errors","errors"],"author":{"name":"Andrew Griffiths","email":"mail@andrewgriffithsonline.com"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"},"engines":["node >= 0.6.0"],"main":"index.js","scripts":{"test":"tap ./test"},"dependencies":{"underscore":">=1.4","log":">=1.4.0"},"devDependencies":{"tap":">=0.4"},"readme":"# Log Errors\n\n[![Build Status](https://secure.travis-ci.org/techjacker/log-errors.png)](http://travis-ci.org/techjacker/log-errors)\n\n- logs errors based on environment\n    - development gets full color-coded errors\n    - production error logs use syslog error headings so they will be picked up by logwatch et al\n    - production only logs serious errors (level 3 and below) to reduce noise\n- request attrs logged if passed request object\n- response returned if passed response object\n\n## Quickstart\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. error responseCode (err.resCode)\n5. request url (req.url)\n6. request query (req.query)\n\n\n#### HTTP Response\n\nIf passed a response object then the logger will return this with the response code specified in the error (err.resCode). It defaults to sending a 500 server error with the body {error: 'Error'}.\n\n```JavaScript\nvar logErrors   = require('log-errors'),\n    logDev      = logErrors.development;\n\n  // will call res.send(403, {\"error\":\"random\"})\n  logDev({resCode:403, name:\"random\"}, req, res);\n```\n\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Base Log Class\n- Production and development loggers inherit from this.\n- If app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n\n```JavaScript\nvar LogClass = function (env, app) {\n    this.env = env;\n    this.app = app;\n};\n```\n\n\n### Development Logger\n- Always prints full error in colored text.\n\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\n- Will only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency']\n\n```JavaScript\nvar logProd = require('log-errors').production,\n    err     = newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n\n#### 'seriousError' Evt\n- If error.LogLevel is 3 or below and this.app is an eventEmitter then the 'seriousError' evt will be prodcast when using the productionLogger.\n- It will NOT be broadcast if the error.doNotKill is truthy\n\n```JavaScript\n    if (!err.doNotKill) {\n      appErrorHandler && this.app.emit('seriousError');\n    }\n```\n\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","_id":"log-errors@4.1.0","dist":{"shasum":"3ac96a85d6a5a896aff62c45792f853c8597b8b7","tarball":"https://registry.npmjs.org/log-errors/-/log-errors-4.1.0.tgz","integrity":"sha512-d/5Vl1gTFP9ItnazvUPGTXkjdnIfxmrjvzdpd6Yy5u/Es0MHvFN9/25OSP7h9LkV+OjoVfE13p5pMCgnZd/5bQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEiINpyaZKS9nDbHP4jHwqX9+wWNA4CxZjTzYWumQJBQAiEA97YuEaQyBXbukYBdL5WsyUsvEjV7ARlmAr7OfRzj73Q="}]},"_npmVersion":"1.1.61","_npmUser":{"name":"techjacker","email":"mail@andrewgriffithsonline.com"},"maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}]}},"readme":"# Log Errors\n\n## Quickstart\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new error(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nThis will output in colored text:\n```Shell\nError name: Error\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n### Using in Express.js\n\nIt will also log request url + query info.\n```JavaScript\nvar\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\n\n// add this at very bottom (below all route handlers)\n// it is designed to catch the errors passed by next(err) calls\n\napp.configure('production', function() {\n\tapp.use(logProd);\n});\n\napp.configure('development', function() {\n\tapp.use(logDev);\n\t// equates to:\n\t// app.use(function(err, req, res, next) {\n\t\t// logDev(err, req, res, next);\n\t// });\n});\n```\n\nExample Output:\n```Shell\nError name: Error\n\nRequest:\n\nurl: someurl\nquery: ?some=random&query=params\n\nError object:\n\n{  \tError: \t\tfunky,\n   \tmessage: \t'funky',\n   \ttype: \t\tundefined,\n   \tstack:  \tGetter/Setter,\n   \targuments: \tundefined }\n\nStack trace:\n\n'Error: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:16:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```\n\n## Docs\n\n#### Info printed to STDOUT\n1. error name: (err.name)\n2. error message (err.message)\n3. error logLevel (err.logLevel)\n4. request url (req.url)\n5. request query (req.query)\n\n#### Log Levels\n- Must be one of the 8 unix log levels used in the [Visionmedia Logging Module](https://github.com/visionmedia/log.js).\n- Defaults to 'info' level if not passed one of the 8 listed.\n\n\n### Development Logger\nAlways prints full error in colored text.\n```JavaScript\nvar logDev \t= require('log-errors').development;\nlogDev(new Error('development error msg'));\n```\n\n### Production Logger\nWill only print error info if error.LogLevel is 3 or below, ie ['error', 'critical', 'alert', 'emergency'].\n```JavaScript\nvar logProd\t= require('log-errors').production,\n\terr \t= newError('some message about the error');\n\nerr.logLevel = 'critical'\nlogProd(err);\n```\n\n## Using in Conjunction with [Custom Errors npm Module](https://github.com/techjacker/custom-errors)\n\n- If your errors inherit from the custom [errors class](https://github.com/techjacker/custom-errors) then the extra error attrs (logLevel, name, message etc) are already added.\n- However, the logger should work fine with the built in base error class too.\n\n```JavaScript\nvar valErr \t\t= require('custom-errors').general.ValidationError,\n\tlogErrors \t= require('log-errors'),\n\tlogProd \t= logErrors.production,\n\tlogDev \t\t= logErrors.development;\n\ntry {\n\tthrow new valErr(\"funky\");\n} catch (e) {\n\tlogDev(e);\n}\n```\n\nOutputs:\n```Shell\nError name: Validation\n\nError object:\n\n{ logLevel: 'warn',\n  message: 'funky',\n  name: 'Validation',\n  resCode: 400,\n  [stack]: [Getter/Setter] }\n\nStack trace:\n\n'Validation: funky\n    at Object.<anonymous> (/home/andy/lib/modules/npm/log-errors/lib/development.js:18:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)\n    at process.startup.processNextTick.process._tickCallback (node.js:244:9)'\n```","maintainers":[{"name":"techjacker","email":"mail@andrewgriffithsonline.com"}],"time":{"modified":"2022-06-19T13:43:40.104Z","created":"2013-04-11T20:11:39.962Z","0.1.1":"2013-04-11T20:11:42.261Z","0.1.2":"2013-04-11T20:15:16.467Z","1.0.0":"2013-04-11T20:16:25.254Z","1.0.1":"2013-04-11T20:42:46.644Z","1.1.0":"2013-04-11T20:53:17.295Z","2.0.0":"2013-04-12T12:08:56.853Z","2.0.1":"2013-04-12T19:41:12.326Z","2.0.2":"2013-04-13T13:20:43.312Z","3.0.0":"2013-04-13T17:55:34.164Z","3.1.0":"2013-04-14T12:39:14.116Z","3.2.0":"2013-04-14T22:23:51.400Z","3.3.0":"2013-04-15T11:54:24.939Z","3.4.0":"2013-04-18T12:03:23.239Z","3.4.1":"2013-04-19T11:41:07.054Z","3.4.2":"2013-06-05T11:55:33.842Z","4.0.0":"2013-10-02T16:22:56.102Z","4.0.1":"2013-10-02T17:12:07.225Z","4.1.0":"2013-10-07T19:36:16.552Z"},"author":{"name":"Andrew Griffiths","email":"mail@andrewgriffithsonline.com"},"repository":{"type":"git","url":"git@github.com:techjacker/log-errors.git"}}