mirror of https://github.com/BTCPrivate/z-nomp.git
Merge pull request #1 from vekexasia/master
Added Sophisticated logging interface.
This commit is contained in:
commit
3e82e2849a
|
@ -6,7 +6,7 @@
|
||||||
"address": "n3s8iDk1onxyY2nuC1k4HoRQFGJ7BhjFcq",
|
"address": "n3s8iDk1onxyY2nuC1k4HoRQFGJ7BhjFcq",
|
||||||
"stratumPort": 3334,
|
"stratumPort": 3334,
|
||||||
"difficulty": 8,
|
"difficulty": 8,
|
||||||
"blockRefreshInterval": 5,
|
"blockRefreshInterval": 1,
|
||||||
"daemon": {
|
"daemon": {
|
||||||
"host": "localhost",
|
"host": "localhost",
|
||||||
"port": 19334,
|
"port": 19334,
|
||||||
|
|
38
init.js
38
init.js
|
@ -1,21 +1,27 @@
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
var dateFormat = require('dateformat');
|
||||||
var Stratum = require('stratum-pool');
|
var Stratum = require('stratum-pool');
|
||||||
|
var PoolLogger = require('./libs/logutils.js');
|
||||||
|
|
||||||
|
var loggerInstance = new PoolLogger({
|
||||||
|
'default': true,
|
||||||
|
'keys': {
|
||||||
|
'client' : 'warning',
|
||||||
|
'system' : true,
|
||||||
|
'submitblock' : true,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var logDebug = loggerInstance.logDebug;
|
||||||
var timeLog = function(text, poolName){
|
var logWarning = loggerInstance.logWarning;
|
||||||
var desc = poolName ? '[' + poolName + '] ' : '';
|
var logError = loggerInstance.logError;
|
||||||
var time = new Date().toISOString();
|
|
||||||
console.log(time + ': ' + desc + text);
|
|
||||||
};
|
|
||||||
|
|
||||||
var config = JSON.parse(fs.readFileSync("config.json"));
|
var config = JSON.parse(fs.readFileSync("config.json"));
|
||||||
|
|
||||||
|
|
||||||
var stratum = new Stratum(config);
|
var stratum = new Stratum(config);
|
||||||
stratum.on('log', function(logText){
|
stratum.on('log', function(logText){
|
||||||
timeLog(logText);
|
logDebug(logText);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,7 +31,7 @@ fs.readdirSync('coins').forEach(function(file){
|
||||||
|
|
||||||
var authorizeFN = function (ip, workerName, password, callback) {
|
var authorizeFN = function (ip, workerName, password, callback) {
|
||||||
// Default implementation just returns true
|
// Default implementation just returns true
|
||||||
timeLog(coinOptions.name, "Authorize ["+ip+"] "+workerName+":"+password);
|
logDebug(coinOptions.name, 'client', "Authorize ["+ip+"] "+workerName+":"+password);
|
||||||
callback({
|
callback({
|
||||||
error: null,
|
error: null,
|
||||||
authorized: true,
|
authorized: true,
|
||||||
|
@ -37,11 +43,17 @@ fs.readdirSync('coins').forEach(function(file){
|
||||||
var pool = stratum.createPool(coinOptions, authorizeFN);
|
var pool = stratum.createPool(coinOptions, authorizeFN);
|
||||||
pool.on('share', function(isValid, data){
|
pool.on('share', function(isValid, data){
|
||||||
if (isValid)
|
if (isValid)
|
||||||
timeLog(coinOptions.name, "A new Valid share from " + data.client.workerName + " has arrived! - " + data.headerHex);
|
logDebug(coinOptions.name, 'client', "A new Valid share from " + data.client.workerName + " has arrived! - " + data.blockHeaderHex);
|
||||||
else
|
else
|
||||||
timeLog(coinOptions.name, "Invalid share form " + data.client.workerName + " ErrorCode: " + data.errorCode + " ErrorDescription: " + data.errorDescription);
|
logDebug(coinOptions.name, 'client', "Invalid share form " + data.client.workerName + " ErrorCode: " + data.errorCode + " ErrorDescription: " + data.errorDescription);
|
||||||
}).on('log', function(logText){
|
}).on('log', function(severity, logKey, logText) {
|
||||||
timeLog(coinOptions.name, logText);
|
if (severity == 'debug') {
|
||||||
|
logDebug(coinOptions.name, logKey, logText);
|
||||||
|
} else if (severity == 'warning') {
|
||||||
|
logWarning(coinOptions.name, logKey, logText);
|
||||||
|
} else if (severity == 'error') {
|
||||||
|
logError(coinOptions.name, logKey, logText);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
var dateFormat = require('dateformat');
|
||||||
|
/*
|
||||||
|
var defaultConfiguration = {
|
||||||
|
'default': true,
|
||||||
|
'keys': {
|
||||||
|
'client' : 'warning',
|
||||||
|
'system' : true,
|
||||||
|
'submitblock' : true,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
|
var severityToInt = function(severity) {
|
||||||
|
switch(severity) {
|
||||||
|
case 'debug':
|
||||||
|
return 10;
|
||||||
|
case 'warning':
|
||||||
|
return 20;
|
||||||
|
case 'error':
|
||||||
|
return 30;
|
||||||
|
default:
|
||||||
|
console.log("Unknown severity "+severity);
|
||||||
|
return 1000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var getSeverityColor = function(severity) {
|
||||||
|
switch(severity) {
|
||||||
|
case 'debug':
|
||||||
|
return 32;
|
||||||
|
case 'warning':
|
||||||
|
return 33;
|
||||||
|
case 'error':
|
||||||
|
return 31;
|
||||||
|
default:
|
||||||
|
console.log("Unknown severity "+severity);
|
||||||
|
return 31;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var PoolLogger = function (configuration) {
|
||||||
|
|
||||||
|
// privates
|
||||||
|
var shouldLog = function(key, severity) {
|
||||||
|
var keyValue = configuration.keys[key];
|
||||||
|
if (typeof(keyValue) === 'undefined') {
|
||||||
|
keyValue = configuration.default;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(keyValue) === 'boolean') {
|
||||||
|
return keyValue;
|
||||||
|
} else if (typeof(keyValue) === 'string') {
|
||||||
|
return severityToInt(severity) >= severityToInt(keyValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var log = function(severity, key, poolName, text) {
|
||||||
|
if ( ! shouldLog(key, severity) ) {
|
||||||
|
// if this tag is set to not be logged or the default value is false then drop it!
|
||||||
|
//console.log(key+"DROPPED "+text);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
var desc = poolName ? '[' + poolName + '] ' : '';
|
||||||
|
console.log(
|
||||||
|
'\u001b['+getSeverityColor(severity)+'m' +
|
||||||
|
dateFormat(new Date(), 'yyyy-mm-dd HH:mm:ss') +
|
||||||
|
" ["+key+"]" + '\u001b[39m: ' + "\t" +
|
||||||
|
desc +
|
||||||
|
text);
|
||||||
|
}
|
||||||
|
|
||||||
|
// public
|
||||||
|
|
||||||
|
this.logDebug = function(poolName, logKey, text){
|
||||||
|
log('debug', logKey, poolName, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.logWarning = function(poolName, logKey, text) {
|
||||||
|
log('warning', logKey, poolName, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.logError = function(poolName, logKey, text) {
|
||||||
|
log('error', logKey, poolName, text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = PoolLogger;
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"name": "node-stratum-portal",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"description": "Node quick start example portal",
|
||||||
|
"main": "init.js",
|
||||||
|
"dependencies": {
|
||||||
|
"stratum-pool": "~0.0.2",
|
||||||
|
"dateformat": "~1.0.7-1.2.3"
|
||||||
|
},
|
||||||
|
"devDependencies": {},
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/zone117x/node-stratum-portal.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"node",
|
||||||
|
"stratum",
|
||||||
|
"pool",
|
||||||
|
"mining"
|
||||||
|
],
|
||||||
|
"author": "zone117x",
|
||||||
|
"license": "GPL",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/zone117x/node-stratum-portal/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/zone117x/node-stratum-portal"
|
||||||
|
}
|
Loading…
Reference in New Issue