UNPKG

@log4js2/core

Version:

log4js2 is a fast and lightweight logging library that enables logging flexibility within JavaScript/TypeScript applications, similar to Apache's [Log4j2 library](https://logging.apache.org/log4j/2.x/). It can also serve as a drop-in replacement for log4

107 lines (106 loc) 4.68 kB
// tslint:disable:bool-param-default Object.defineProperty(exports, "__esModule", { value: true }); // tslint:disable-next-line var TIMEZONE = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g; var TIMEZONE_CLIP = /[^-+\dA-Z]/g; /** * Pads numbers in the date format * * @param {string|number} value * @param {number} length * @param {string} character * * @returns {string} the padded string */ exports.padLeft = function (value, length, character) { if (character === void 0) { character = ' '; } var strValue = String(value); while (strValue.length < length) { strValue = character + strValue; } return strValue; }; var DateTimeFormat; (function (DateTimeFormat) { DateTimeFormat["DEFAULT"] = "yyyy-MM-dd HH:mm:ss,S"; DateTimeFormat["ABSOLUTE"] = "HH:mm:ss,S"; DateTimeFormat["COMPACT"] = "yyyyMMddHHmmssS"; DateTimeFormat["DATE"] = "dd MMM yyyy HH:mm:ss,S"; DateTimeFormat["ISO8601"] = "yyyy-MM-ddTHH:mm:ss,S"; DateTimeFormat["ISO8601_BASIC"] = "yyyyMMddTHHmmss,S"; })(DateTimeFormat = exports.DateTimeFormat || (exports.DateTimeFormat = {})); var _i18n = { d: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], m: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }; var _maskStore = {}; var _flags = { d: function (date) { return date.getDate(); }, dd: function (date) { return exports.padLeft(date.getDate(), 2, '0'); }, ddd: function (date) { return _i18n.d[date.getDay()]; }, dddd: function (date) { return _i18n.d[date.getDay() + 7]; }, M: function (date) { return date.getMonth() + 1; }, MM: function (date) { return exports.padLeft(date.getMonth() + 1, 2, '0'); }, MMM: function (date) { return _i18n.m[date.getMonth()]; }, MMMM: function (date) { return _i18n.m[date.getMonth() + 12]; }, yy: function (date, isUTC) { return String(isUTC ? date.getFullYear() : date.getUTCFullYear()).slice(2); }, yyyy: function (date, isUTC) { return isUTC ? date.getFullYear() : date.getUTCFullYear(); }, h: function (date) { return date.getHours() % 12 || 12; }, hh: function (date) { return exports.padLeft(date.getHours() % 12 || 12, 2, '0'); }, H: function (date) { return date.getHours(); }, HH: function (date) { return exports.padLeft(date.getHours(), 2, '0'); }, m: function (date) { return date.getMinutes(); }, mm: function (date) { return exports.padLeft(date.getMinutes(), 2, '0'); }, s: function (date) { return date.getSeconds(); }, ss: function (date) { return exports.padLeft(date.getSeconds(), 2, '0'); }, S: function (date) { return exports.padLeft(date.getMilliseconds(), 1); }, a: function (date) { return date.getHours() < 12 ? 'a' : 'p'; }, aa: function (date) { return date.getHours() < 12 ? 'am' : 'pm'; }, A: function (date) { return date.getHours() < 12 ? 'A' : 'P'; }, AA: function (date) { return date.getHours() < 12 ? 'AM' : 'PM'; }, Z: function (date, isUTC) { return isUTC ? 'UTC' : (String(date).match(TIMEZONE)).pop().replace(TIMEZONE_CLIP, ''); }, o: function (date, isUTC) { var offset = isUTC ? 0 : date.getTimezoneOffset(); return (offset > 0 ? '-' : '+') + exports.padLeft(Math.floor(Math.abs(offset) / 60) * 100 + Math.abs(offset) % 60, 4, '0'); } }; function _createMask(mask) { if (_maskStore[mask] instanceof Array) { return _maskStore[mask]; } var formatMap = []; var regex = /(.)\1+|(.)/; var maskStr = mask; var match; var value; // tslint:disable-next-line:no-conditional-assignment while (match = maskStr.match(regex)) { value = match[0]; formatMap.push(_flags[value] || value); maskStr = maskStr.substring(value.length); } _maskStore[mask] = formatMap; return formatMap; } /** * Converts a date to a formatted string * @param {Date | string | number} date * @param {string} mask * @returns {string} */ exports.formatDate = function (date, mask) { if (!(date instanceof Date)) { date = new Date(date); } mask = String(mask || DateTimeFormat.DEFAULT); var isUTC = (mask.slice(0, 4) === 'UTC:'); if (isUTC) { mask = mask.slice(4); } return _createMask(mask).map(function (value) { return value instanceof Function ? value(date, isUTC) : value; }).join(''); };