ng2-logger
Version:
isomorphic logger for browser/server in typescript
138 lines • 4.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.demoTs = demoTs;
const lib_1 = require("tnp-core/lib");
const ng2_logger_1 = require("./ng2-logger");
function demoTs() {
const separator = (title) => {
console.log('\n\n==============================');
console.log(title);
console.log('==============================\n');
};
lib_1.Helpers.taskStarted('LOGGER EDGE CASE DEMO');
//#region BASIC USAGE
separator('1️⃣ BASIC USAGE');
const log = ng2_logger_1.Log.create('cli');
log.info('info');
log.i('info alias');
log.error('error');
log.er('error alias');
log.data('data');
log.d('data alias');
log.warn('warn');
log.w('warn alias');
//#endregion
//#region GLOBAL LEVEL
separator('2️⃣ GLOBAL LEVEL (WARN+)');
ng2_logger_1.Log.setGlobalLevel(ng2_logger_1.Level.WARN);
log.info('SHOULD NOT PRINT');
log.warn('SHOULD PRINT');
log.error('SHOULD PRINT');
ng2_logger_1.Log.setGlobalLevel(null);
//#endregion
//#region ONLY LEVEL
separator('3️⃣ ONLY LEVEL (ERROR ONLY)');
ng2_logger_1.Log.onlyLevel(ng2_logger_1.Level.ERROR);
log.info('NO');
log.error('YES');
ng2_logger_1.Log.onlyLevel(); // reset (if your impl allows)
//#endregion
//#region DISABLE / ENABLE
separator('4️⃣ DISABLE / ENABLE');
ng2_logger_1.Log.disableAllLogs();
log.error('NO PRINT');
console.log('console.log blocked');
ng2_logger_1.Log.enableAllLogs();
log.error('PRINT AGAIN');
//#endregion
//#region PERMANENT DISABLE
// separator('5️⃣ PERMANENT DISABLE');
// Log.disableAllLogsPermanetly();
// log.error('NO');
// Log.enableAllLogs();
// log.error('STILL NO');
// NOTE:
// After this point console is dead permanently.
// So we re-enable manually for demo continuation:
// console.log = (...args: any[]) => process.stdout.write(args.join(' ') + '\n');
//#endregion
//#region MUTED MODULES
separator('6️⃣ MUTED MODULES');
ng2_logger_1.Log.settings.mutedModules = ['allowed'];
const allowed = ng2_logger_1.Log.create('allowed');
const blocked = ng2_logger_1.Log.create('blocked');
allowed.info('YES');
blocked.info('NO');
ng2_logger_1.Log.settings.mutedModules = [];
//#endregion
//#region SET LEVEL PER LOGGER
separator('7️⃣ LOGGER.setLevel');
const levelLog = ng2_logger_1.Log.create('level-test');
levelLog.setLevel(ng2_logger_1.Level.ERROR);
levelLog.warn('NO');
levelLog.error('YES');
//#endregion
//#region LARGE OBJECT
separator('8️⃣ LARGE OBJECT');
log.info('large object', {
nested: {
arr: Array.from({ length: 50 }, (_, i) => i),
},
});
//#endregion
//#region CIRCULAR OBJECT
separator('9️⃣ CIRCULAR OBJECT');
const circular = {};
circular.self = circular;
log.info('circular test', circular);
//#endregion
//#region ERROR OBJECT
separator('🔟 ERROR OBJECT');
try {
throw new Error('boom');
}
catch (e) {
log.error('caught error', e);
}
//#endregion
//#region SPECIAL VALUES
separator('1️⃣1️⃣ SPECIAL VALUES');
log.info(null);
log.info(undefined);
log.info(NaN);
log.info(Symbol('test'));
log.info(BigInt(123));
//#endregion
//#region VERY LONG MESSAGE
separator('1️⃣2️⃣ VERY LONG MESSAGE');
log.error('x'.repeat(2000));
//#endregion
//#region TIMESTAMP
separator('1️⃣3️⃣ TIMESTAMP');
ng2_logger_1.Log.settings.showTimestamp = true;
log.info('with timestamp');
ng2_logger_1.Log.settings.showTimestamp = false;
//#endregion
//#region CONCURRENCY SPAM
separator('1️⃣4️⃣ STRESS TEST (100 logs)');
for (let i = 0; i < 100; i++) {
log.info(`spam ${i}`);
}
//#endregion
//#region MULTIPLE MODULES
separator('1️⃣5️⃣ MULTIPLE MODULES');
const a = ng2_logger_1.Log.create('a');
const b = ng2_logger_1.Log.create('b');
a.info('module a');
b.info('module b');
//#endregion
//#region MODULE NAME TRIM EDGE CASE
separator('1️⃣6️⃣ MODULE NAME TRIM');
const spaced = ng2_logger_1.Log.create('networking ');
const trimmed = ng2_logger_1.Log.create('networking');
spaced.info('with trailing space');
trimmed.info('without trailing space');
//#endregion
lib_1.Helpers.taskDone('LOGGER EDGE CASE DEMO DONE');
}
//# sourceMappingURL=demo.js.map