2.3.1 • Published 2 years ago
@starkow/logger v2.3.1
@starkow/logger
why?
- i wanted to make it by my own
- it's gorgeous i think
- fixed colors for static names (logger name
'foo'will produce deterministic yet still random color every time)! - it have log level
- file logs exist Yes👍
- yeah
usage
import { Logger, Color, TextStyle } from '@starkow/logger'
const log = Logger.create('foo') // log will be given random yet deterministic color
log('bar', Logger.color('baz', Color.Red, TextStyle.Bold), ':)')alternative imports:
import { Logger } from '@starkow/logger'
import { Color, TextStyle } from '@starkow/logger/colors'log levels
priority:
LogLevel.Generic-log(...),log.log(...)LogLevel.Info-log.info(...)+ all the aboveLogLevel.Debug-log.debug(...)+ all the aboveLogLevel.Warn-log.warn(...)+ all the aboveLogLevel.Error-log.error(...)+ all the above
default log level is LogLevel.Error
import { Logger, LogLevel } from '@starkow/logger'
Logger.config.setLogLevel(LogLevel.Info) // only Info and lower will be logged
const log = Logger.create('@starkow/logger')
log('is cool!')
log.info('is the best!')
log.debug('sucks') // we dont want this to be logged so we chose LogLevel.Info instead of LogLevel.Debugfilelogs
import { resolve } from 'node:path'
import { Logger } from '@starkow/logger'
Logger.config.setFilePath(resolve(__dirname, 'epic.log'))
Logger.create('this will be logged')('into a file!', { 42: true })file {__dirname}/epic.log will look like this:
2023-10-05T22:47:16.630Z [this will be logged] into a file! {"42":true}reference
Logger.create(name: string, ...colors: AnyColor[])
Initializes logger function
Returns: LoggerInstance
Logger.create('bot', Color.Green, TextStyle.Underline)('started!')Logger.log(...), Logger.error(...), Logger.warn(...), Logger.debug(...), Logger.info(...)
Logs data to chosen stream
Logger.log('foo', { bar: 'baz' })
Logger.error('error!')
Logger.debug({ type: 'paid', amount: 13.49 })Logger.prefix(name: string, ...colors: AnyColor[])
Generates current logger prefix
Returns: string
const prefix = Logger.prefix('server', Color.Cyan)
Logger.log(prefix, 'started!')Logger.color(text: string, ...colors: AnyColor[])
Colorizes given
textwith givencolors
Returns: string
const coloredFoo = Logger.color('foo', Color.Magenta, BackgroundColor.White)
Logger.log(coloredFoo)Logger.updateLog(text: string, params?: LogUpdateParams)
Updates last log line
Returns: void
Logger.log( 'Loading: 9%' )
Logger.updateLog('Loading: 45%' )
Logger.updateLog('Loading: 77%' )
Logger.updateLog('Loading: 100% [Done!]')LoggerInstance
const log = Logger.create('logger')(...data: any[]): void, log(...data: any[]): void
log( 'foo', ['bar', 13.37])
log.log('foo', ['bar', 13.37])update(...): void
log('1')
log.update('2')
log.update('3')error(...): void
log.error('failed!')warn(...): void
log.warn('something is about to crash!')debug(...): void
log.debug({ 42: 'the truth' })info(...): void
log.info('this log is very mandatory keep listening to me i swear')