https://github.com/mikeal/logref
Logging for node.js
https://github.com/mikeal/logref
Last synced: 2 months ago
JSON representation
Logging for node.js
- Host: GitHub
- URL: https://github.com/mikeal/logref
- Owner: mikeal
- Created: 2011-12-14T06:53:52.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2017-07-11T21:55:22.000Z (almost 8 years ago)
- Last Synced: 2024-10-18T09:13:34.151Z (9 months ago)
- Language: JavaScript
- Homepage:
- Size: 2.93 KB
- Stars: 12
- Watchers: 3
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Logging
This is a considerable departure from the traditional logger.
This logger is meant for use in third party modules and packages. It's so that modules can have a very simple way to offer optional visibility in to the modules inner workings.
To this end, it does not have log levels like *info*, *warn*, etc. It simply allows the creation of a logger for your module (with a name) and offer a single function to take messages and a context for those messages.
This module is both an implementation and a light specification. Loggers can be quite opinionated and the creators of modules are unlikely to solidify around a single implementation of anything.
## Spec
A logging library should be a single function that returns logger functions.
```javascript
var logging = require('logging')
, log = logging('mymodulename')
;
```When running an application in a production environment, logging is the one of the few things you need to be global that is outside of node core.
Users of this specification should require **the user** to set the process.logging to the desired module. A library **must never** set this property automatically as it will override any other logger the user may want to use.
**server.js**
```javascript
process.logging = require('logging')
var request = require('request')
```Notice that this line comes **before** loading **any** other module. This is important, modules will likely check for process.logging as soon as they are required.
Using the logger is quite easy within a module.
```javascript
if (process.logging) var log = process.logging('mymodule')
else var log = function () {}...
module.exports = fancy (options) {
log('new fancy %method for %url', options)
}
...
fancy({method:'GET', url:'http://www.google.com'})
```The final piece of this spec is visible in the last example.
Log functions take two arguments, a message and a context.
Named string interpolation from the context **should** be supported. This prevents many errors related to using the + operator in building the message string.
## logging API
The rest of this documentation covers features which should not be considered part of the specification.
Enabling stdout or stderr printing of logs.
```
require('logging').stdout()
``````
require('logging').stderr()
```All will print `[mymodule] new fancy GET for http://www.google.com`.