gcl
Version:
码农村nodejs类库,完成解决回调陷阱,配置框架,IOC框架,统一多DB访问框架,可扩展日志框架和io/db/net/thread/pool 克隆表达式,加解密算法等等一系列基础类库和算法的实现
629 lines (527 loc) • 21.1 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NiResource = exports.DicResource = exports.FileResource = exports.LogTypeTrigger = exports.RegexTrigger = exports.AResource = exports.AFormatter = exports.ATrigger = exports.LogLisener = exports.Logger = exports.LogRecord = exports.LogType = undefined;
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _get2 = require('babel-runtime/helpers/get');
var _get3 = _interopRequireDefault(_get2);
var _toArray2 = require('babel-runtime/helpers/toArray');
var _toArray3 = _interopRequireDefault(_toArray2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _tool = require('../common/tool');
var _tool2 = _interopRequireDefault(_tool);
var _ni = require('../db/ni');
var _ni2 = _interopRequireDefault(_ni);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _tool3 = require('./tool');
var _tool4 = _interopRequireDefault(_tool3);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _events = require('events');
var _events2 = _interopRequireDefault(_events);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var LogType = exports.LogType = {
/// <summary>
/// 最终的需要显示的正确结果
///</summary>
RELEASE: 0,
/// <summary>
/// 程序错误
///</summary>
ERROR: 1,
/// <summary>
/// 可能引发错误的警告
///</summary>
WARN: 2,
/// <summary>
/// 程序日志信息(默认信息)
///</summary>
INFO: 3,
/// <summary>
/// 程序调试信息
///</summary>
DEBUG: 4,
/// <summary>
/// 测试信息说明
///</summary>
TEST: 5,
/// <summary>
/// 全部的,一般作为默认参数使用
/// </summary>
All: 255
};
var LogRecord = exports.LogRecord = function () {
function LogRecord() {
var logtype = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : LogType.INFO;
var needDateTime = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var needDiscript = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var needSeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
(0, _classCallCheck3.default)(this, LogRecord);
var _pri = pri(this, { separator: '==================================================================\r\n', params: [], recordTime: new Date(), data: "", num: 0, source: "" }),
_ = _pri._,
__ = _pri.__;
_.needDateTime = 'true' == ('' + needDateTime).toLowerCase();
_.needDiscript = 'true' == ('' + needDiscript).toLowerCase();
_.needSeparator = 'true' == ('' + needSeparator).toLowerCase();
}
(0, _createClass3.default)(LogRecord, [{
key: 'clone',
value: function clone() {
var _pri2 = pri(this),
_ = _pri2._,
__ = _pri2.__;
var ret = new LogRecord(_.logtype, _.needDateTime, _.needDiscript, _.needSeparator);
ret.source = _.source;
ret.num = _.num;
ret.data = _.data;
ret.params = _.params;
return ret;
}
}, {
key: 'toString',
value: function toString(record) {
var _pri3 = pri(this),
_ = _pri3._,
__ = _pri3.__;
var rec = record || _;
return [rec.needSeparator ? __.separator : ' ', rec.needDateTime ? rec.recordTime.toString('yyyy-MM-dd HH:mm:ss:S ') : '', rec.needDiscript ? LogType.map[rec.logtype] + " " : '', rec.num > 0 ? rec.num + " " : '', rec.data ? rec.data + " " : '', rec.params ? rec.params.join(' ') : '', rec.needSeparator ? '\r\n' + __.separator + '\r\n' : '\r\n'].join('');
}
}, {
key: 'params',
get: function get() {
var _pri4 = pri(this),
_ = _pri4._,
__ = _pri4.__;
return __.params;
},
set: function set() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var _pri5 = pri(this),
_ = _pri5._,
__ = _pri5.__;
__.params = Array.prototype.slice.apply(data, [0, data.length]);
}
}, {
key: 'recordTime',
get: function get() {
var _pri6 = pri(this),
_ = _pri6._,
__ = _pri6.__;
return __.recordTime;
}
}, {
key: 'data',
get: function get() {
var _pri7 = pri(this),
_ = _pri7._,
__ = _pri7.__;
return __.data;
},
set: function set() {
var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var _pri8 = pri(this),
_ = _pri8._,
__ = _pri8.__;
__.data = val;
}
}, {
key: 'num',
get: function get() {
var _pri9 = pri(this),
_ = _pri9._,
__ = _pri9.__;
return __.num;
},
set: function set() {
var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var _pri10 = pri(this),
_ = _pri10._,
__ = _pri10.__;
__.num = val;
}
}, {
key: 'source',
get: function get() {
var _pri11 = pri(this),
_ = _pri11._,
__ = _pri11.__;
return __.source;
},
set: function set() {
var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var _pri12 = pri(this),
_ = _pri12._,
__ = _pri12.__;
__.source = val;
}
}]);
return LogRecord;
}();
var Logger = exports.Logger = function () {
function Logger() {
var logrecord = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new LogRecord();
(0, _classCallCheck3.default)(this, Logger);
var _pri13 = pri(this, { record: logrecord, event: new _events2.default.EventEmitter(), enable: true }),
_ = _pri13._,
__ = _pri13.__;
}
(0, _createClass3.default)(Logger, [{
key: 'setLisener',
value: function setLisener(lisener) {
var _pri14 = pri(this),
_ = _pri14._,
__ = _pri14.__;
__.event.on('log', function (record) {
return _tool2.default.tryC(function () {
return lisener.log(record);
});
});
__.event.on('close', function () {
return _tool2.default.tryC(function () {
return lisener.close();
});
});
}
}, {
key: 'dispose',
value: function dispose() {
var _pri15 = pri(this),
_ = _pri15._,
__ = _pri15.__;
__.event.emit('close');
__.event.removeAllListeners();
}
}, {
key: 'log',
value: function log(logtype, data, params, num) {
var _pri16 = pri(this),
_ = _pri16._,
__ = _pri16.__;
if (_.enable) {
var record = __.record.clone();
record.logtype = logtype;
record.data = data + '';
record.params = params;
record.num = num;
__.event.emit('log', record);
}
}
}, {
key: 'error',
value: function error() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
args.unshift(LogType.ERROR);
this.log.apply(this, args);
}
}, {
key: 'warn',
value: function warn() {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
args.unshift(LogType.WARN);
this.log.apply(this, args);
}
}, {
key: 'release',
value: function release() {
for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
args.unshift(LogType.RELEASE);
this.log.apply(this, args);
}
}, {
key: 'info',
value: function info() {
for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
args.unshift(LogType.INFO);
this.log.apply(this, args);
}
}, {
key: 'debug',
value: function debug() {
for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
args[_key5] = arguments[_key5];
}
args.unshift(LogType.DEBUG);
this.log.apply(this, args);
}
}, {
key: 'test',
value: function test() {
for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
args[_key6] = arguments[_key6];
}
args.unshift(LogType.TEST);
this.log.apply(this, args);
}
}, {
key: 'enable',
get: function get() {
var _pri17 = pri(this),
_ = _pri17._,
__ = _pri17.__;
return __.enable;
},
set: function set() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var _pri18 = pri(this),
_ = _pri18._,
__ = _pri18.__;
__.enable = data;
}
}]);
return Logger;
}();
var LogLisener = exports.LogLisener = function () {
function LogLisener() {
var triggers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var formatter = arguments[1];
var resources = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var isAnd = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
(0, _classCallCheck3.default)(this, LogLisener);
var _triggers = (0, _toArray3.default)(triggers),
tri = _triggers.slice(0),
_resources = (0, _toArray3.default)(resources),
res = _resources.slice(0);
var _pri19 = pri(this, { triggers: tri, formatter: formatter, resources: res, isAnd: isAnd }),
_ = _pri19._,
__ = _pri19.__;
if (__.triggers.length == 0) throw new Error('triggers数组不能为空');
if (!__.formatter) throw new Error('formatter不能为空');
if (__.resources.length == 0) throw new Error('resources数组不能为空');
}
(0, _createClass3.default)(LogLisener, [{
key: 'log',
value: function log(record) {
var _pri20 = pri(this),
_ = _pri20._,
__ = _pri20.__;
var isLog = __.isAnd;
__.triggers.forEach(function (v) {
if (__.isAnd) isLog &= v.test(record);else isLog |= v.test(record);
//if ((__.isAnd ? isLog > 0 : isLog == 0)) return false;
});
if (isLog > 0) {
var content = __.formatter.toString(record);
_tool2.default.each(__.resources, function (v) {
v.write(content);return false;
});
}
}
}, {
key: 'close',
value: function close() {
var _pri21 = pri(this),
_ = _pri21._,
__ = _pri21.__;
_tool2.default.each(__.resources, function (v) {
if (v.close) v.close();return false;
});
}
}]);
return LogLisener;
}();
var ATrigger = exports.ATrigger = function () {
function ATrigger() {
(0, _classCallCheck3.default)(this, ATrigger);
}
(0, _createClass3.default)(ATrigger, [{
key: 'test',
value: function test(record) {
return true;
}
}]);
return ATrigger;
}();
var AFormatter = exports.AFormatter = function () {
function AFormatter() {
(0, _classCallCheck3.default)(this, AFormatter);
}
(0, _createClass3.default)(AFormatter, [{
key: 'toString',
value: function toString(data) {
return data ? data.toString() : (0, _get3.default)(AFormatter.prototype.__proto__ || (0, _getPrototypeOf2.default)(AFormatter.prototype), 'toString', this).call(this);
}
}]);
return AFormatter;
}();
var AResource = exports.AResource = function () {
function AResource() {
(0, _classCallCheck3.default)(this, AResource);
}
(0, _createClass3.default)(AResource, [{
key: 'write',
value: function write(data) {}
}, {
key: 'close',
value: function close() {}
}]);
return AResource;
}();
var RegexTrigger = exports.RegexTrigger = function (_ATrigger) {
(0, _inherits3.default)(RegexTrigger, _ATrigger);
function RegexTrigger(reg) {
(0, _classCallCheck3.default)(this, RegexTrigger);
var _this = (0, _possibleConstructorReturn3.default)(this, (RegexTrigger.__proto__ || (0, _getPrototypeOf2.default)(RegexTrigger)).call(this));
var _pri22 = pri(_this),
_ = _pri22._,
__ = _pri22.__;
__.reg = new RegExp(reg);
return _this;
}
(0, _createClass3.default)(RegexTrigger, [{
key: 'test',
value: function test(record) {
var _pri23 = pri(this),
_ = _pri23._,
__ = _pri23.__;
return record.data.match(__.reg) != null || record.params.join(' ').match(__.reg) != null;
}
}]);
return RegexTrigger;
}(ATrigger);
var LogTypeTrigger = exports.LogTypeTrigger = function (_ATrigger2) {
(0, _inherits3.default)(LogTypeTrigger, _ATrigger2);
function LogTypeTrigger() {
var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : LogType.INFO;
(0, _classCallCheck3.default)(this, LogTypeTrigger);
var _this2 = (0, _possibleConstructorReturn3.default)(this, (LogTypeTrigger.__proto__ || (0, _getPrototypeOf2.default)(LogTypeTrigger)).call(this));
pri(_this2, { min: min, max: max });
return _this2;
}
(0, _createClass3.default)(LogTypeTrigger, [{
key: 'test',
value: function test(record) {
var _pri24 = pri(this),
_ = _pri24._,
__ = _pri24.__;
return record.logtype >= __.min && record.logtype <= __.max;
}
}]);
return LogTypeTrigger;
}(ATrigger);
/**
* 文件源服务
* @param {路径定义 会传入name参数} path
* @param {传入Date.toString参数生成文件名} nameformat
* @param {两次记录的等待时间} waittime
*/
var FileResource = exports.FileResource = function (_AResource) {
(0, _inherits3.default)(FileResource, _AResource);
function FileResource() {
var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.' + _tool2.default.environment.splitChar + 'log' + name + '.log';
var nameformat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'yyyyMMddHH';
var waittime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 20000;
(0, _classCallCheck3.default)(this, FileResource);
var _this3 = (0, _possibleConstructorReturn3.default)(this, (FileResource.__proto__ || (0, _getPrototypeOf2.default)(FileResource)).call(this));
pri(_this3, { path: path, nameformat: nameformat, sb: _tool2.default.sb(), waittime: waittime, hasCreate: false });
return _this3;
}
(0, _createClass3.default)(FileResource, [{
key: 'write',
value: function write(data) {
var _pri25 = pri(this),
_ = _pri25._,
__ = _pri25.__;
if (data) {
if (__.sb.length == 0) {
__.sb.append(data);
_tool2.default.once(function () {
return _tool2.default.tryC(function () {
var name = _tool2.default.format(__.path, { name: new Date().toString(__.nameformat) });
if (!__.hasCreate) {
__.hasCreate = true;
var path = __.path.split(_tool2.default.environment.splitChar);
path.forEach(function (k, i) {
return path[i] = k.indexOf('.') < 1 ? k : null;
});
_tool4.default.createDir(path.join(_tool2.default.environment.splitChar)).then(function () {
_fs2.default.appendFile(name, __.sb.clear(), function () {});
});
} else _fs2.default.appendFile(name, __.sb.clear(), function () {});
});
}, __.waittime);
} else {
__.sb.append(data);
}
}
}
}]);
return FileResource;
}(AResource);
/**
* 文件夹源服务
* @param {文件夹定义 会传入dic参数} dic
* @param {路径定义 会传入name参数} path
* @param {传入Date.toString参数生成文件名} nameformat
* @param {两次记录的等待时间} waittime
*/
var DicResource = exports.DicResource = function (_FileResource) {
(0, _inherits3.default)(DicResource, _FileResource);
function DicResource() {
var dic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var path = arguments[1];
var nameformat = arguments[2];
var waittime = arguments[3];
(0, _classCallCheck3.default)(this, DicResource);
return (0, _possibleConstructorReturn3.default)(this, (DicResource.__proto__ || (0, _getPrototypeOf2.default)(DicResource)).call(this, dic + path, nameformat, waittime));
}
return DicResource;
}(FileResource);
/**
* 用于使用ni方法调用中间操作对象发送日志信息
* @param {模板名} templatename
* @param {方法名} methodname
* @param {中介者对象} middler
*/
var NiResource = exports.NiResource = function (_AResource2) {
(0, _inherits3.default)(NiResource, _AResource2);
function NiResource(templatename, methodname, middler) {
(0, _classCallCheck3.default)(this, NiResource);
var _this5 = (0, _possibleConstructorReturn3.default)(this, (NiResource.__proto__ || (0, _getPrototypeOf2.default)(NiResource)).call(this));
pri(_this5, { NiTemplateManager: new _ni2.default.NiTemplateManager(middler), templatename: templatename, methodname: methodname });
return _this5;
}
(0, _createClass3.default)(NiResource, [{
key: 'write',
value: function write(data) {
var _pri26 = pri(this),
_ = _pri26._,
__ = _pri26.__;
if (data) {
_tool2.default.tryC(function () {
return __.NiTemplateManager.execute(__.templatename, __.methodname, { data: data });
});
}
}
}]);
return NiResource;
}(AResource);
exports.default = { LogType: LogType, LogRecord: LogRecord, Logger: Logger, LogLisener: LogLisener, ATrigger: ATrigger, AFormatter: AFormatter, AResource: AResource, RegexTrigger: RegexTrigger, LogTypeTrigger: LogTypeTrigger, FileResource: FileResource, DicResource: DicResource, NiResource: NiResource };
var pri = _tool2.default.pris();
LogType.map = function () {
var ret = {};
for (var k in LogType) {
var v = LogType[k];
ret[v] = k;
}
return ret;
}();
//# sourceMappingURL=log.js.map