UNPKG

ng2-logger

Version:

isomorphic logger for browser/server in typescript

135 lines 4.48 kB
import { Helpers__NS__taskDone, Helpers__NS__taskStarted } from 'tnp-core/lib-prod'; import { Level, Log__NS__create, Log__NS__disableAllLogs, Log__NS__enableAllLogs, Log__NS__onlyLevel, Log__NS__setGlobalLevel, Log__NS__settings } from './ng2-logger'; export function demoTs() { const separator = (title) => { console.log('\n\n=============================='); console.log(title); console.log('==============================\n'); }; Helpers__NS__taskStarted('LOGGER EDGE CASE DEMO'); //#region BASIC USAGE separator('1️⃣ BASIC USAGE'); const log = Log__NS__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+)'); Log__NS__setGlobalLevel(Level.WARN); log.info('SHOULD NOT PRINT'); log.warn('SHOULD PRINT'); log.error('SHOULD PRINT'); Log__NS__setGlobalLevel(null); //#endregion //#region ONLY LEVEL separator('3️⃣ ONLY LEVEL (ERROR ONLY)'); Log__NS__onlyLevel(Level.ERROR); log.info('NO'); log.error('YES'); Log__NS__onlyLevel(); // reset (if your impl allows) //#endregion //#region DISABLE / ENABLE separator('4️⃣ DISABLE / ENABLE'); Log__NS__disableAllLogs(); log.error('NO PRINT'); console.log('console.log blocked'); Log__NS__enableAllLogs(); log.error('PRINT AGAIN'); //#endregion //#region PERMANENT DISABLE // separator('5️⃣ PERMANENT DISABLE'); // Log__NS__disableAllLogsPermanetly(); // log.error('NO'); // Log__NS__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'); Log__NS__settings.mutedModules = ['allowed']; const allowed = Log__NS__create('allowed'); const blocked = Log__NS__create('blocked'); allowed.info('YES'); blocked.info('NO'); Log__NS__settings.mutedModules = []; //#endregion //#region SET LEVEL PER LOGGER separator('7️⃣ LOGGER.setLevel'); const levelLog = Log__NS__create('level-test'); levelLog.setLevel(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'); Log__NS__settings.showTimestamp = true; log.info('with timestamp'); Log__NS__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 = Log__NS__create('a'); const b = Log__NS__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 = Log__NS__create('networking '); const trimmed = Log__NS__create('networking'); spaced.info('with trailing space'); trimmed.info('without trailing space'); //#endregion Helpers__NS__taskDone('LOGGER EDGE CASE DEMO DONE'); } //# sourceMappingURL=demo.js.map