NodeUtil
This is just a tool collect for easy use of some tool library. I will pack some operation for more easy to use.
Install
npm install nodeutil
Usage
var nu = require('nodeutil');
Using logger
var log = nu.logger.getInstance();
log.info('Test logger...');
Or you can insert log name to getInstance() to catelogry your log...
var log = nu.logger.getInstance('MAIN_LOG');
You can also set logger some advance properties:
var log = require('nodeutil').logger.getInstance('io_sockets', {
path: 'your-logger-path',
catg: 'log-category-name',
level: 'log-level',
logMaxSize: 'max-log-file-size',
logBackup: 'backup-days'
});
Advance Logger
If your need to do more with log, you can extend the log4js setting like this:
var log = nu.logger.addInstance('appjs', {
"type": "dateFile",
"filename": 'test-log.log',
"pattern": "-yyyy-MM-dd-ss.log",
"alwaysIncludePattern": true
});
In addAppender(), you can put appender config using log4js config format. Related config format, please reference to log4js: https://github.com/nomiddlename/log4js-node
For date rolling log, please reference here for dateFile appender: https://github.com/nomiddlename/log4js-node/wiki/Date-rolling-file-appender
Simple Log
Simple log is fix format using js file name and function name as prefix. It is focus that user can easily find the log exist in
var log = require('nodeutil').simplelog;
log.info('Hello %s!');
Using dateutil
var dateutil = no.dateutil;
var pattern = 'yyyymmdd hh24:mi:ss';
dateutil.getNowString(pattern);
dateutil.getDateString(new Date(), pattern)
Using step
var Step = nu.step;
Step(
function step1(){
//do something...
return something1;
},
function step2(step1_returned){
//do something
return something2;
},
...
)
Using cfgutil
var cfgutil = nu.cfgutil;
//read from json file
var cfg = cfgutil.readJsonCfg('path to json config file');
Using mailutil
var mailer = numailutil; mailer; mailer;
Using mailutil through localhost sendmail service
var mailer = mailutil; mailer; mailer;
Advance using mailutil...
mailer; mailer;
Convert Json to Table
var json2table = nujson2table;var json = aaa:123 bbb:223 aaa:223 bbb:323;console;
The result:
aaabbb123223223323
Generate GUID
var guid = nuguid;//Generate a guid without prefix and postfixconsole;//Generate a guid with 2 digit prefix and 3 digit postfixconsole; //Generate a guid using specifc seedvar a = '12341234'console;
The result:
-13ee608f7e0-FE-13ee608f7e1-Diarm-12341234-eep
Simple Validator
Create model
var validator = require('nodeutil').validator;
var usermodel = {
username: {
type: "string", require: true, max: 200, desc: 'the username, must provide as an email address',
validator: validator.isEmail
},
password: {
type: "string", require: false, max: 200, desc: 'the password'
},
sex: {
type: "string", require: true, max: 200, desc: 'the sex'
},
created: {
type: "number", require: true, max: 200, "default":-1, desc: 'the create time in number format',
map: function(v) {
if(v == -1) return new Date().getTime();
}
},
user_type: {
type: "number", require: true, "default": 0, pick: [0,1,2], updatable: true, desc:'the user type to define the role of user'
},
test: {
type: "string", require: false, max: 200, desc: 'just for test',
map: function(v) {
return "111" + v;
}
}
}
If the object not exist sex:
//file: test.js
var user = {
username: 'simon',
password: '123',
user_type: '0'
}
var result = validator.check(user, usermodel);
console.log('check result:', result);
Run:
$ node test
/Users/peihsinsu/project/github-projects/nodeutil/lib/validator.js:66
if(!vo[k] && vo[k] != 0) throw "value of key [" + k + "] not found";
^
value of key [sex] not found
If the object is valid
//file: test.js
var user = {
username: 'simon',
password: '123',
user_type: '0',
sex: 'M'
}
var result = validator.check(user, usermodel);
console.log('check result:', result);
Run:
$ node test
check result: { username: 'simon',
password: '123',
sex: 'M',
created: 1456637453105,
user_type: '0' }