UNPKG

thinknode

Version:

A fast, flexible and all-in-one web framework for node.js.

123 lines (91 loc) 3.91 kB
'use strict'; exports.__esModule = true; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _os = require('os'); var _os2 = _interopRequireDefault(_os); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _class = function (_THINK$Base) { (0, _inherits3.default)(_class, _THINK$Base); function _class() { (0, _classCallCheck3.default)(this, _class); return (0, _possibleConstructorReturn3.default)(this, _THINK$Base.apply(this, arguments)); } _class.prototype.init = function init() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.options = THINK.extend(false, { log_itemtype: 'console', //日志类型,console console输出的日志 | memory 内存使用和负载日志 | custom 自定义日志 log_level: THINK.config('log_level'), //日志存储级别, info, warn, error, console类型日志有效 log_interval: THINK.config('log_interval') //一分钟记录一次, memory类型日志有效 }, options); }; /** * 获取当前日期 * @return {[type]} [description] */ _class.prototype.getDate = function getDate() { return THINK.datetime('', 'yyyy-mm-dd'); }; /** * 获取当前时间 * @return {[type]} [description] */ _class.prototype.getDateTime = function getDateTime() { return THINK.datetime('', 'yyyy-mm-dd hh:mi:ss'); }; /** * 运行日志 */ _class.prototype.logConsole = function logConsole() { var self = this; var type = ['info', 'warn', 'error']; //默认只接管console.error及console.warn日志, console类型日志有效 this.options.log_itemtype = 'console'; var level = this.options.log_level || []; type.forEach(function (item) { console[item] = function () { if (level.indexOf(item) > -1) { var msgs = ['[' + item.toUpperCase() + ']'].concat([].slice.call(arguments)); self.set('', msgs); } }; }); }; /** * 内存日志 */ _class.prototype.logMemory = function logMemory() { var _this2 = this; this.options.log_itemtype = 'memory'; var format = function format(data) { return (data / 1048576).toFixed(1) + 'MB'; // 1048576 = 1024 * 1024 }; setInterval(function () { var memoryUsage = process.memoryUsage(); var loadAvg = _os2.default.loadavg(); var msgs = ['rss:' + format(memoryUsage.rss), 'heapTotal:' + format(memoryUsage.heapTotal), 'heapUsed:' + format(memoryUsage.heapUsed), 'freeMemory:' + format(_os2.default.freemem()), 'loadAvg:' + loadAvg[0].toFixed(1) + ',' + loadAvg[1].toFixed(1) + ',' + loadAvg[2].toFixed(2)]; _this2.set('', msgs); }, this.options.log_interval); }; /** * * @param name * @param msgs */ _class.prototype.logCustom = function logCustom(name, msgs) { this.options.log_itemtype = 'custom'; msgs = ['[INFO]', msgs]; this.set(name, msgs); }; return _class; }(THINK.Base); /** * * @author richen * @copyright Copyright (c) 2015 - <richenlin(at)gmail.com> * @license MIT * @version 15/11/19 */ exports.default = _class;