Skip to content

Commit

Permalink
feat(hariko-logger): logger make from lib #20
Browse files Browse the repository at this point in the history
  • Loading branch information
rymizuki committed Aug 31, 2019
1 parent 53deb55 commit 470492b
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 3 deletions.
10 changes: 8 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -28,7 +28,7 @@
"license": "MIT",
"dependencies": {
"body-parser": "^1.13.2",
"colors": "^1.1.2",
"colors": "^1.3.3",
"dateformat": "^1.0.11",
"express": "^4.13.1",
"gaze": "^1.1.3",
Expand All @@ -42,6 +42,7 @@
"yargs": "^3.15.0"
},
"devDependencies": {
"@types/dateformat": "^3.0.0",
"@types/json5": "0.0.30",
"@types/mocha": "^5.2.6",
"@types/node": "^11.13.8",
Expand Down
66 changes: 66 additions & 0 deletions src/hariko-logger/index.ts
@@ -0,0 +1,66 @@
import 'colors'
import dateformat from 'dateformat'

type LevelType = 'debug' | 'verbose' | 'info' | 'warn' | 'error'

const LOG_LEVELS = {
error: 5,
warn: 4,
info: 3,
verbose: 2,
debug: 1
}
const LOG_COLORS = {
error: 'red',
warn: 'yellow',
info: 'green',
verbose: 'cyan',
debug: 'magenta'
}

export class Logger {
private level_name: LevelType
private time: boolean

set level(value: LevelType) {
if (!LOG_LEVELS[value])
throw new Error("Unsupported log level '" + value + "'")
this.level_name = value
}

get level() {
return this.level_name
}

log(level: LevelType, ...args: any[]) {
// logger.log(level, 'format text', arg1, arg2 ...);
if (LOG_LEVELS[this.level] > LOG_LEVELS[level]) return
console.log.apply(console, this.format(level, args))
}
format(level: LevelType, args: any[]) {
var format = args.shift()
var tag = '[' + level.toUpperCase() + ']'
var time = this.time ? '[' + dateformat(new Date(), 'HH:MM:ss:l') + ']' : ''
args.unshift(time.grey + tag[LOG_COLORS[level]] + ' ' + format)
return args
}
debug(...args: any[]) {
this.log('debug', ...args)
}
verbose(...args: any[]) {
this.log('verbose', ...args)
}
info(...args: any[]) {
this.log('info', ...args)
}
warn(...args: any[]) {
this.log('warn', ...args)
}
error(...args: any[]) {
this.log('error', ...args)
}
}

export const logger = new Logger()

export default logger // migration

0 comments on commit 470492b

Please sign in to comment.