mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-20 19:39:54 +00:00
76 lines
1.7 KiB
TypeScript
76 lines
1.7 KiB
TypeScript
import { Injectable } from '@angular/core'
|
|
import { ElectronService } from './electron.service'
|
|
import * as winston from 'winston'
|
|
import * as fs from 'fs'
|
|
import * as path from 'path'
|
|
|
|
const initializeWinston = (electron: ElectronService) => {
|
|
const logDirectory = electron.app.getPath('userData')
|
|
|
|
if (!fs.existsSync(logDirectory)) {
|
|
fs.mkdirSync(logDirectory)
|
|
}
|
|
|
|
return winston.createLogger({
|
|
transports: [
|
|
new winston.transports.File({
|
|
level: 'debug',
|
|
filename: path.join(logDirectory, 'log.txt'),
|
|
format: winston.format.simple(),
|
|
handleExceptions: false,
|
|
maxsize: 5242880,
|
|
maxFiles: 5,
|
|
}),
|
|
],
|
|
exitOnError: false,
|
|
})
|
|
}
|
|
|
|
export class Logger {
|
|
constructor (
|
|
private winstonLogger: any,
|
|
private name: string,
|
|
) {}
|
|
|
|
debug (...args: any[]) {
|
|
this.doLog('debug', ...args)
|
|
}
|
|
|
|
info (...args: any[]) {
|
|
this.doLog('info', ...args)
|
|
}
|
|
|
|
warn (...args: any[]) {
|
|
this.doLog('warn', ...args)
|
|
}
|
|
|
|
error (...args: any[]) {
|
|
this.doLog('error', ...args)
|
|
}
|
|
|
|
log (...args: any[]) {
|
|
this.doLog('log', ...args)
|
|
}
|
|
|
|
private doLog (level: string, ...args: any[]) {
|
|
console[level](`%c[${this.name}]`, 'color: #aaa', ...args)
|
|
if (this.winstonLogger) {
|
|
this.winstonLogger[level](...args)
|
|
}
|
|
}
|
|
}
|
|
|
|
@Injectable({ providedIn: 'root' })
|
|
export class LogService {
|
|
private log: any
|
|
|
|
/** @hidden */
|
|
constructor (electron: ElectronService) {
|
|
this.log = initializeWinston(electron)
|
|
}
|
|
|
|
create (name: string): Logger {
|
|
return new Logger(this.log, name)
|
|
}
|
|
}
|