UNPKG

@waiting/log

Version:

Lightweight logging for browser

98 lines (95 loc) 2.96 kB
import { defaultConfig } from './config' import { localSave } from './localstorage' import { logger } from './logger' import { LogLevel } from './model' import { isSuppressLogLevel, setMaxMsgLength, setPersist, setPersistTTL, setRunLevel, setStoragePrefix, validateLogLevel, } from './util' export function trace(data, persist) { return proxy('trace', data, persist) } export function debug(data, persist) { return proxy('debug', data, persist) } export function log(data, persist) { return proxy('log', data, persist) } export function info(data, persist) { return proxy('info', data, persist) } export function warn(data, persist) { return proxy('warn', data, persist) } export function error(data, persist) { return proxy('error', data, persist) } export function silent(data, persist) { return proxy('silent', data, persist) } /** Get copy of defaultConfig */ export function getConfig() { return Object.assign({}, defaultConfig) } /** Set value of key of defaultConfig and return copy of defaultConfig */ export function setConfig(config) { if (config && typeof config === 'object') { for (const [key, value] of Object.entries(config)) { switch (key) { case 'maxMsgLength': setMaxMsgLength(value) break case 'persist': setPersist(value) break case 'persistTTL': setPersistTTL(value) break case 'runLevel': setRunLevel(value) break case 'storagePrefix': setStoragePrefix(value) break /* istanbul ignore next */ default: info(`setConfig(config): value of param invalid: key "${key}"/value "${value}"`) break } } } else { info(`setConfig(config): value of param invalid: "${config}"`) } return getConfig() } export function getAvailableLogLevel() { const ret = [] Object.keys(LogLevel).forEach(key => { if (key && typeof key === 'string' && Number.isNaN(+key)) { try { validateLogLevel(key) ret.push(key) } catch (ex) { // void } } }) return ret } /** * @returns void or key of LocalStorage Item (if persist true) */ function proxy(level, data, persist) { /* istanbul ignore else */ if (isSuppressLogLevel(defaultConfig.runLevel, level)) { return } /* istanbul ignore else */ if (level === 'silent') { return } logger(level, data) const persistNew = typeof persist === 'boolean' ? persist : defaultConfig.persist if (persistNew) { localSave(level, data, defaultConfig.storagePrefix, defaultConfig.maxMsgLength) } }