New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

elecpen

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

elecpen - npm Package Compare versions

Comparing version 0.2.0 to 0.2.1

3

package.json
{
"name": "elecpen",
"version": "0.2.0",
"version": "0.2.1",
"description": "a simple logger",

@@ -24,2 +24,3 @@ "main": "index.js",

"chalk": "^1.0.0",
"debug": "^2.2.0",
"moment": "^2.11.1"

@@ -26,0 +27,0 @@ },

# ElecPen
[![Build Status](https://travis-ci.org/leozdgao/elecpen.svg?branch=master)](https://travis-ci.org/leozdgao/elecpen)
[![npm version](https://badge.fury.io/js/elecpen.svg)](https://badge.fury.io/js/elecpen)

@@ -23,8 +24,8 @@ We take logger as a function to receive a record and output to a stream, and `elecPen` is a simple logger creator.

|Option|Description|
|------|-----------|
|infoFile|File name for logging info and verbose|
|errFile|File name for logging error and warning|
|timestamp|Date format for logger or pass `true` to use the default format|
|append|If file exists, append new entries to it instead of truncating|
|Option|Type|Description|
|------|----|-----------|
|infoFile|string, function|File name for logging info and verbose|
|errFile|string, function|File name for logging error and warning|
|timestamp|string, boolean|Date format for logger or pass `true` to use the default format|
|append|boolean|If file exists, append new entries to it instead of truncating|

@@ -38,22 +39,60 @@ ### Methods

### Example
## Example
```javascript
var opts = {
You can you a set of default logger:
```js
// use default logger
const opts = {
infoFile: 'info.log', // record info and verbose
errFile: 'err.log', // record error and warning
logToConsole: true,
timestamp: true, // default to true
timestamp: true,
append: true // default to true
};
var http = requrie('http');
var logger = require('logger').createLogger(opts);
}
const http = requrie('http')
const logger = require('elecpen').defaultLogger(opts)
http.createServer(function(req, res) {
logger.info('Recieve a request. Path: %s', req.path);
res.end('Hello world.');
http.createServer((req, res) => {
logger.info('Recieve a request. Path: %s', req.path)
res.end('Hello world.')
})
.listen(4000, function() {
logger.info('Server listening...');
});
.listen(4000, _ => {
logger.info('Server listening...')
})
```
Dynamic file name is supported, and it is useful to record log by separated file.
```js
const opts = {
infoFile () {
const now = new Date()
return `log-${now.getFullYear()}-${now.getMonth() + 1}`
},
errFile: 'err.log'
}
const logger = require('elecpen').defaultLogger(opts)
logger.info('Hello World!')
```
Or create you own logger:
```js
const fs = require('fs')
const elecpen = require('elecpen')
const recorder = elecpen.streamRecorder()
const log = function (msg) {
// dynamic stream
const stream = recorder(
_ => `log-${Date.now()}.log`,
name => fs.createWriteStream(name, { flags: 'a' })
)
stream && elecpen(stream, 'Message', timestamp)(msg)
}
log('Hello World!')
```
## License
MIT

@@ -6,2 +6,8 @@ import fs from 'fs'

const debug = require('debug')('elecpen')
function isFunction (v) {
return typeof v == 'function'
}
/**

@@ -57,14 +63,21 @@ * Main method for create logger. The logger is just a function to recieve

const infoRecorder = streamRecorder()
const errRecorder = streamRecorder()
return {
verbose () {
infoStream && createLogger(infoStream, 'Verbose', timestamp).apply(this, arguments)
const stream = infoRecorder(infoFile, name => fs.createWriteStream(name, { flags: flag }))
stream && createLogger(stream, 'Verbose', timestamp).apply(this, arguments)
},
info () {
infoStream && createLogger(infoStream, 'Info', timestamp).apply(this, arguments)
const stream = infoRecorder(infoFile, name => fs.createWriteStream(name, { flags: flag }))
stream && createLogger(stream, 'Info', timestamp).apply(this, arguments)
},
warning () {
errStream && createLogger(errStream, 'Warning', timestamp).apply(this, arguments)
const stream = errRecorder(errFile, name => fs.createWriteStream(name, { flags: flag }))
stream && createLogger(stream, 'Warning', timestamp).apply(this, arguments)
},
error () {
errStream && createLogger(errStream, 'Error', timestamp).apply(this, arguments)
const stream = errRecorder(errFile, name => fs.createWriteStream(name, { flags: flag }))
stream && createLogger(stream, 'Error', timestamp).apply(this, arguments)
}

@@ -74,4 +87,27 @@ }

/**
* Record the stream by key
* @return {function} A function return stream
*/
function streamRecorder () {
let lastKey, lastStream
return (key, createStream) => {
if (isFunction(key)) key = key.call()
debug(`Recorder get key: ${key}`)
if (key !== lastKey) {
debug(`Recorder will return a new stream`)
lastKey = key
lastStream = createStream.call(null, key)
}
return lastStream
}
}
createLogger.defaultLogger = useDefaultLogger
createLogger.streamRecorder = streamRecorder
module.exports = createLogger

@@ -40,10 +40,8 @@ var assert = require('assert')

it('Should append to an existed file.', function(done) {
var expect = /(?:^|\n*)\[Info\] (.*?) Hello world(?:\n+|$)/g
logger2.info('Hello world')
logger2.info('Hello world')
fs.readFile(infoFile, { encoding: 'utf-8' }, function(err, result) {
var m, count = 0
while((m = expect.exec(result)) != null) {
count++
}
assert.equal(count, 2)
var lines = result.split('\n')
assert.equal(lines.length, 3)
done(err)

@@ -50,0 +48,0 @@ })

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc