log4js-in-memory-appender
Version:
log4js v2 in memory appender
11 lines • 1.66 kB
JavaScript
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;
;