@ng-log/log4a
Version:
A powerful and customizable logging library for Angular application.
75 lines • 8.74 kB
JavaScript
import { HttpHeaders } from '@angular/common/http';
import { catchError, throwError } from 'rxjs';
import { of } from 'rxjs/internal/observable/of';
import { AbstractLogger } from './log4a.model';
export class ConsoleAppender extends AbstractLogger {
log(entry) {
entry.buildLogString();
return of(true);
}
clear() {
console.clear();
return of(true);
}
}
export class LocalStorageAppender extends AbstractLogger {
constructor() {
super();
this.location = 'logging';
}
log(entry) {
let ret = false;
let values;
try {
const location = localStorage.getItem(this.location) ?? '';
values = JSON.parse(location) || [];
values.push(entry);
localStorage.setItem(this.location, JSON.stringify(values));
ret = true;
}
catch (e) {
console.error(e);
}
return of(ret);
}
clear() {
localStorage.removeItem(this.location);
return of(true);
}
}
export class WebApiAppender extends AbstractLogger {
constructor(http) {
super();
this.http = http;
this.location = 'api/logging';
}
log(entry) {
// let headers = new Headers({ 'Content-Type': 'Content-Type' });
const options = new HttpHeaders().set('Content-Type', 'application/json');
this.http
.post(this.location, entry, { headers: options }).pipe(catchError((error, caught) => {
console.error('There was an error!', error);
// after handling error, return a new observable
// that doesn't emit any values and completes
return of();
}));
return of(true);
}
clear() {
// TODO: Call Web API to clear all values
return of(true);
}
handleErrors(error) {
const errors = [];
let msg = '';
msg = 'Status: ' + error.status;
msg += ' - Status Text: ' + error.statusText;
if (error.json()) {
msg += ' - Exception Message: ' + error.json().exceptionMessage;
}
errors.push(msg);
console.error('An error occurred', errors);
return throwError(errors);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1hcHBlbmRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbG9nL2xvZzRhL3NyYy9saWIvY29yZS1hcHBlbmRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxjQUFjO0lBQ2pELEdBQUcsQ0FBQyxLQUFlO1FBQ2pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsS0FBSztRQUNILE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsY0FBYztJQUN0RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFlO1FBQ2pCLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLE1BQWtCLENBQUM7UUFFdkIsSUFBSTtZQUNGLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzRCxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzVELEdBQUcsR0FBRyxJQUFJLENBQUM7U0FDWjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQjtRQUNELE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLO1FBQ0gsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxjQUFjO0lBQ2hELFlBQW9CLElBQWdCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUVsQyxJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQztJQUNoQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQWU7UUFDakIsaUVBQWlFO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxJQUFJO2FBQ04sSUFBSSxDQUFVLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQVUsRUFBRSxNQUF1QixFQUFtQixFQUFFO1lBQ2xJLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUMsaURBQWlEO1lBQ2pELDZDQUE2QztZQUM3QyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSztRQUNILHlDQUF5QztRQUN6QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQVU7UUFDN0IsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUViLEdBQUcsR0FBRyxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxHQUFHLElBQUksa0JBQWtCLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM3QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQixHQUFHLElBQUksd0JBQXdCLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDO1NBQ2pFO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVqQixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzL2ludGVybmFsL29ic2VydmFibGUvb2YnO1xuaW1wb3J0IHsgTG9nRW50cnkgfSBmcm9tICcuL2xvZzRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICcuL2xvZzRhLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIENvbnNvbGVBcHBlbmRlciBleHRlbmRzIEFic3RyYWN0TG9nZ2VyIHtcbiAgbG9nKGVudHJ5OiBMb2dFbnRyeSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGVudHJ5LmJ1aWxkTG9nU3RyaW5nKCk7XG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG4gIGNsZWFyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnNvbGUuY2xlYXIoKTtcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZUFwcGVuZGVyIGV4dGVuZHMgQWJzdHJhY3RMb2dnZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubG9jYXRpb24gPSAnbG9nZ2luZyc7XG4gIH1cblxuICBsb2coZW50cnk6IExvZ0VudHJ5KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgbGV0IHJldCA9IGZhbHNlO1xuICAgIGxldCB2YWx1ZXM6IExvZ0VudHJ5W107XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbG9jYXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmxvY2F0aW9uKSA/PyAnJztcbiAgICAgIHZhbHVlcyA9IEpTT04ucGFyc2UobG9jYXRpb24pIHx8IFtdO1xuICAgICAgdmFsdWVzLnB1c2goZW50cnkpO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sb2NhdGlvbiwgSlNPTi5zdHJpbmdpZnkodmFsdWVzKSk7XG4gICAgICByZXQgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiBvZihyZXQpO1xuICB9XG5cbiAgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5sb2NhdGlvbik7XG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXZWJBcGlBcHBlbmRlciBleHRlbmRzIEFic3RyYWN0TG9nZ2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmxvY2F0aW9uID0gJ2FwaS9sb2dnaW5nJztcbiAgfVxuXG4gIGxvZyhlbnRyeTogTG9nRW50cnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAvLyBsZXQgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdDb250ZW50LVR5cGUnIH0pO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgdGhpcy5odHRwXG4gICAgICAucG9zdDxib29sZWFuPih0aGlzLmxvY2F0aW9uLCBlbnRyeSwgeyBoZWFkZXJzOiBvcHRpb25zIH0pLnBpcGUoY2F0Y2hFcnJvcigoZXJyb3I6IGFueSwgY2F1Z2h0OiBPYnNlcnZhYmxlPGFueT4pOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IhJywgZXJyb3IpO1xuICAgICAgICAvLyBhZnRlciBoYW5kbGluZyBlcnJvciwgcmV0dXJuIGEgbmV3IG9ic2VydmFibGUgXG4gICAgICAgIC8vIHRoYXQgZG9lc24ndCBlbWl0IGFueSB2YWx1ZXMgYW5kIGNvbXBsZXRlc1xuICAgICAgICByZXR1cm4gb2YoKTtcbiAgICB9KSk7XG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG5cbiAgY2xlYXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgLy8gVE9ETzogQ2FsbCBXZWIgQVBJIHRvIGNsZWFyIGFsbCB2YWx1ZXNcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9ycyhlcnJvcjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IG1zZyA9ICcnO1xuXG4gICAgbXNnID0gJ1N0YXR1czogJyArIGVycm9yLnN0YXR1cztcbiAgICBtc2cgKz0gJyAtIFN0YXR1cyBUZXh0OiAnICsgZXJyb3Iuc3RhdHVzVGV4dDtcbiAgICBpZiAoZXJyb3IuanNvbigpKSB7XG4gICAgICBtc2cgKz0gJyAtIEV4Y2VwdGlvbiBNZXNzYWdlOiAnICsgZXJyb3IuanNvbigpLmV4Y2VwdGlvbk1lc3NhZ2U7XG4gICAgfVxuICAgIGVycm9ycy5wdXNoKG1zZyk7XG5cbiAgICBjb25zb2xlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCcsIGVycm9ycyk7XG5cbiAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcnMpO1xuICB9XG59XG4iXX0=