70 lines
2.2 KiB
TypeScript
70 lines
2.2 KiB
TypeScript
import Model from "../db/Model";
|
|
import {LogLevel, LogLevelKeys} from "../Logger";
|
|
import Validator from "../db/Validator";
|
|
|
|
export default class Log extends Model {
|
|
private level?: number;
|
|
public message?: string;
|
|
private log_id?: Buffer;
|
|
private error_name?: string;
|
|
private error_message?: string;
|
|
private error_stack?: string;
|
|
private created_at?: Date;
|
|
|
|
protected defineProperties(): void {
|
|
this.defineProperty<number>('level', new Validator<number>().defined());
|
|
this.defineProperty<string>('message', new Validator<string>().defined().between(0, 65535));
|
|
this.defineProperty<Buffer>('log_id', new Validator<Buffer>().acceptUndefined().length(16));
|
|
this.defineProperty<string>('error_name', new Validator<string>().acceptUndefined().between(0, 128));
|
|
this.defineProperty<string>('error_message', new Validator<string>().acceptUndefined().between(0, 512));
|
|
this.defineProperty<string>('error_stack', new Validator<string>().acceptUndefined().between(0, 65535));
|
|
this.defineProperty<Date>('created_at', new Validator<Date>());
|
|
}
|
|
|
|
public getLevel(): LogLevelKeys {
|
|
if (typeof this.level !== 'number') return 'ERROR';
|
|
return <LogLevelKeys>LogLevel[this.level];
|
|
}
|
|
|
|
public setLevel(level: LogLevelKeys) {
|
|
this.level = LogLevel[level];
|
|
}
|
|
|
|
public getLogID(): string | null {
|
|
if (!this.log_id) return null;
|
|
const chars = this.log_id!.toString('hex');
|
|
let out = '';
|
|
let i = 0;
|
|
for (const l of [8, 4, 4, 4, 12]) {
|
|
if (i > 0) out += '-';
|
|
out += chars.substr(i, l);
|
|
i += l;
|
|
}
|
|
return out;
|
|
}
|
|
|
|
public setLogID(buffer: Buffer) {
|
|
this.log_id = buffer;
|
|
}
|
|
|
|
public getErrorName(): string {
|
|
return this.error_name || '';
|
|
}
|
|
|
|
public getErrorMessage(): string {
|
|
return this.error_message || '';
|
|
}
|
|
|
|
public getErrorStack(): string {
|
|
return this.error_stack || '';
|
|
}
|
|
|
|
public setError(error?: Error) {
|
|
if (!error) return;
|
|
|
|
this.error_name = error.name;
|
|
this.error_message = error.message;
|
|
this.error_stack = error.stack;
|
|
}
|
|
}
|