UNPKG

log4js-in-memory-appender

Version:
11 lines 1.66 kB
'use strict';var APPENDER_KEY=Symbol.for('APPENDER_KEY'),BUFFER_KEY=Symbol.for('BUFFER_KEY'),FLUSH_KEY=Symbol.for('FLUSH_KEY'),globalSymbols=Object.getOwnPropertySymbols(global),hasAppenderKey=-1<globalSymbols.indexOf(APPENDER_KEY),hasBufferKey=-1<globalSymbols.indexOf(BUFFER_KEY),hasFlushKey=-1<globalSymbols.indexOf(FLUSH_KEY);hasAppenderKey||(global[APPENDER_KEY]=function(a,b){// the default layout for the appender var c=b.basicLayout;// check if there is another layout specified // create a new appender instance return a.layout&&(c=b.layout(a.layout.type,a.layout)),function(a,b){var c=b||{},d=c.maxBufferSize||100,e=function(b){if(global[BUFFER_KEY][b.categoryName]||(global[BUFFER_KEY][b.categoryName]=[]),global[BUFFER_KEY][b.categoryName].length+1>d){var e=global[BUFFER_KEY][b.categoryName].length-d+1;0<e&&global[BUFFER_KEY][b.categoryName].splice(0,e)}global[BUFFER_KEY][b.categoryName].push(a(b,c.timezoneOffset))};// add a shutdown function. return e.shutdown=function(a){global[BUFFER_KEY]={},a()},e}(c,a)}),hasBufferKey||(global[BUFFER_KEY]={}),hasFlushKey||(global[FLUSH_KEY]=function(a){global[BUFFER_KEY][a]=[]});// define the singleton API // ------------------------ var singleton={};// ensure the API is never changed // ------------------------------- // export the singleton API only // ----------------------------- Object.defineProperty(singleton,'configure',{get:function a(){return global[APPENDER_KEY]}}),Object.defineProperty(singleton,'buffer',{get:function a(){return global[BUFFER_KEY]}}),Object.defineProperty(singleton,'flush',{get:function a(){return global[FLUSH_KEY]}}),Object.freeze(singleton),module.exports=singleton;