refactor: use ngx-logger instead of @openstapps/logger

Closes #71
This commit is contained in:
Jovan Krunić
2020-11-17 13:54:02 +01:00
parent f7790426cd
commit 987f9d45f5
10 changed files with 63 additions and 27 deletions

14
package-lock.json generated
View File

@@ -11525,6 +11525,15 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
"dev": true "dev": true
}, },
"ngx-logger": {
"version": "4.1.9",
"resolved": "https://registry.npmjs.org/ngx-logger/-/ngx-logger-4.1.9.tgz",
"integrity": "sha512-hEJDtWWi+1OSCM7Syz4J8GyFhkf+f0HBbvnMniAMRp9x9gRdtj+Q0cesXdxVV4JJmIhxJQM88NNVRR0cOtPeHQ==",
"requires": {
"tslib": "^1.9.0",
"vlq": "^1.0.0"
}
},
"ngx-markdown": { "ngx-markdown": {
"version": "9.1.1", "version": "9.1.1",
"resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-9.1.1.tgz", "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-9.1.1.tgz",
@@ -17280,6 +17289,11 @@
"extsprintf": "^1.2.0" "extsprintf": "^1.2.0"
} }
}, },
"vlq": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
"integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="
},
"vm-browserify": { "vm-browserify": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",

View File

@@ -52,7 +52,6 @@
"@openstapps/api": "0.22.0", "@openstapps/api": "0.22.0",
"@openstapps/configuration": "0.25.0", "@openstapps/configuration": "0.25.0",
"@openstapps/core": "0.36.0", "@openstapps/core": "0.36.0",
"@openstapps/logger": "0.4.0",
"cordova-android": "8.0.0", "cordova-android": "8.0.0",
"cordova-browser": "6.0.0", "cordova-browser": "6.0.0",
"cordova-ios": "5.0.0", "cordova-ios": "5.0.0",
@@ -66,6 +65,7 @@
"deepmerge": "3.3.0", "deepmerge": "3.3.0",
"form-data": "2.5.0", "form-data": "2.5.0",
"moment": "2.24.0", "moment": "2.24.0",
"ngx-logger": "4.1.9",
"ngx-markdown": "9.1.1", "ngx-markdown": "9.1.1",
"ngx-moment": "3.4.0", "ngx-moment": "3.4.0",
"rxjs": "6.6.3", "rxjs": "6.6.3",

View File

@@ -23,6 +23,7 @@ import {TranslateService} from '@ngx-translate/core';
import {AppComponent} from './app.component'; import {AppComponent} from './app.component';
import {ConfigProvider} from './modules/config/config.provider'; import {ConfigProvider} from './modules/config/config.provider';
import {SettingsProvider} from './modules/settings/settings.provider'; import {SettingsProvider} from './modules/settings/settings.provider';
import {NGXLogger} from "ngx-logger";
describe('AppComponent', () => { describe('AppComponent', () => {
@@ -33,6 +34,7 @@ describe('AppComponent', () => {
let translateServiceSpy: jasmine.SpyObj<TranslateService>; let translateServiceSpy: jasmine.SpyObj<TranslateService>;
let settingsProvider: jasmine.SpyObj<SettingsProvider>; let settingsProvider: jasmine.SpyObj<SettingsProvider>;
let configProvider: jasmine.SpyObj<ConfigProvider>; let configProvider: jasmine.SpyObj<ConfigProvider>;
let ngxLogger: jasmine.SpyObj<NGXLogger>;
beforeEach(async(() => { beforeEach(async(() => {
statusBarSpy = jasmine.createSpyObj('StatusBar', ['styleDefault']); statusBarSpy = jasmine.createSpyObj('StatusBar', ['styleDefault']);
@@ -44,6 +46,8 @@ describe('AppComponent', () => {
['getSettingValue', 'provideSetting', 'setCategoriesOrder']); ['getSettingValue', 'provideSetting', 'setCategoriesOrder']);
configProvider = jasmine.createSpyObj('ConfigProvider', configProvider = jasmine.createSpyObj('ConfigProvider',
['init']); ['init']);
ngxLogger = jasmine.createSpyObj('NGXLogger',
['log', 'error', 'warn']);
TestBed.configureTestingModule({ TestBed.configureTestingModule({
declarations: [AppComponent], declarations: [AppComponent],
@@ -54,6 +58,7 @@ describe('AppComponent', () => {
{provide: TranslateService, useValue: translateServiceSpy}, {provide: TranslateService, useValue: translateServiceSpy},
{provide: SettingsProvider, useValue: settingsProvider}, {provide: SettingsProvider, useValue: settingsProvider},
{provide: ConfigProvider, useValue: configProvider}, {provide: ConfigProvider, useValue: configProvider},
{provide: NGXLogger, useValue: ngxLogger},
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA], schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents(); }).compileComponents();

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2018, 2019 StApps * Copyright (C) 2018-2020 StApps
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free * under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3. * Software Foundation, version 3.
@@ -17,7 +17,7 @@ import {SplashScreen} from '@ionic-native/splash-screen/ngx';
import {StatusBar} from '@ionic-native/status-bar/ngx'; import {StatusBar} from '@ionic-native/status-bar/ngx';
import {Platform} from '@ionic/angular'; import {Platform} from '@ionic/angular';
import {TranslateService} from '@ngx-translate/core'; import {TranslateService} from '@ngx-translate/core';
import {Logger} from '@openstapps/logger'; import {NGXLogger} from 'ngx-logger';
import {ConfigProvider} from './modules/config/config.provider'; import {ConfigProvider} from './modules/config/config.provider';
import {SettingsProvider} from './modules/settings/settings.provider'; import {SettingsProvider} from './modules/settings/settings.provider';
@@ -51,13 +51,15 @@ export class AppComponent {
* @param translateService TODO * @param translateService TODO
* @param settingsProvider TODO * @param settingsProvider TODO
* @param configProvider TODO * @param configProvider TODO
* @param logger An angular logger
*/ */
constructor(private readonly platform: Platform, constructor(private readonly platform: Platform,
private readonly statusBar: StatusBar, private readonly statusBar: StatusBar,
private readonly splashScreen: SplashScreen, private readonly splashScreen: SplashScreen,
private readonly translateService: TranslateService, private readonly translateService: TranslateService,
private readonly settingsProvider: SettingsProvider, private readonly settingsProvider: SettingsProvider,
private readonly configProvider: ConfigProvider) { private readonly configProvider: ConfigProvider,
private readonly logger: NGXLogger) {
this.initializeApp(); this.initializeApp();
// this language will be used as a fallback when a translation isn't found in the current language // this language will be used as a fallback when a translation isn't found in the current language
@@ -84,7 +86,7 @@ export class AppComponent {
// @TODO: Issue #43 handle initialisation error and inform user // @TODO: Issue #43 handle initialisation error and inform user
} }
} }
await Logger.error(error); this.logger.error(error);
} }
// set order of categories in settings // set order of categories in settings
@@ -100,7 +102,7 @@ export class AppComponent {
const languageCode = (await this.settingsProvider.getValue('profile', 'language')) as string; const languageCode = (await this.settingsProvider.getValue('profile', 'language')) as string;
this.translateService.use(languageCode); this.translateService.use(languageCode);
} catch (error) { } catch (error) {
Logger.warn(error); this.logger.warn(error);
} }
}); });
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2018, 2019 StApps * Copyright (C) 2018-2020 StApps
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free * under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3. * Software Foundation, version 3.
@@ -23,7 +23,8 @@ import {StatusBar} from '@ionic-native/status-bar/ngx';
import {IonicModule, IonicRouteStrategy} from '@ionic/angular'; import {IonicModule, IonicRouteStrategy} from '@ionic/angular';
import {TranslateLoader, TranslateModule} from '@ngx-translate/core'; import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader'; import {TranslateHttpLoader} from '@ngx-translate/http-loader';
import {fakeBackendProvider} from './_helpers/fake-backend.interceptor'; import {LoggerModule, NgxLoggerLevel} from 'ngx-logger';
import {environment} from '../environments/environment';
import {AppRoutingModule} from './app-routing.module'; import {AppRoutingModule} from './app-routing.module';
import {AppComponent} from './app.component'; import {AppComponent} from './app.component';
import {ConfigModule} from './modules/config/config.module'; import {ConfigModule} from './modules/config/config.module';
@@ -31,7 +32,7 @@ import {DataModule} from './modules/data/data.module';
import {MenuModule} from './modules/menu/menu.module'; import {MenuModule} from './modules/menu/menu.module';
import {SettingsModule} from './modules/settings/settings.module'; import {SettingsModule} from './modules/settings/settings.module';
import {StorageModule} from './modules/storage/storage.module'; import {StorageModule} from './modules/storage/storage.module';
import {environment} from './../environments/environment'; import {fakeBackendProvider} from './_helpers/fake-backend.interceptor';
registerLocaleData(localeDe); registerLocaleData(localeDe);
@@ -80,6 +81,8 @@ const providers : Provider[] = [
useFactory: (createTranslateLoader), useFactory: (createTranslateLoader),
}, },
}), }),
// use maximal logging level when not in production, minimal (log only fatal errors) in production
LoggerModule.forRoot({level: environment.production ? NgxLoggerLevel.FATAL : NgxLoggerLevel.TRACE}),
], ],
providers: providers:
environment.use_fake_backend ? [providers, fakeBackendProvider] : providers, environment.use_fake_backend ? [providers, fakeBackendProvider] : providers,

View File

@@ -18,6 +18,7 @@ import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider';
import {StorageProvider} from '../storage/storage.provider'; import {StorageProvider} from '../storage/storage.provider';
import {ConfigProvider, STORAGE_KEY_CONFIG} from './config.provider'; import {ConfigProvider, STORAGE_KEY_CONFIG} from './config.provider';
import {ConfigFetchError, ConfigInitError, SavedConfigNotAvailable, WrongConfigVersionInStorage,} from './errors'; import {ConfigFetchError, ConfigInitError, SavedConfigNotAvailable, WrongConfigVersionInStorage,} from './errors';
import {NGXLogger} from "ngx-logger";
describe('ConfigProvider', () => { describe('ConfigProvider', () => {
let configProvider: ConfigProvider; let configProvider: ConfigProvider;
@@ -26,6 +27,7 @@ describe('ConfigProvider', () => {
beforeEach(() => { beforeEach(() => {
const storageProviderMethodSpy = jasmine.createSpyObj('StorageProvider', ['init', 'get', 'has', 'put']); const storageProviderMethodSpy = jasmine.createSpyObj('StorageProvider', ['init', 'get', 'has', 'put']);
const webHttpClientMethodSpy = jasmine.createSpyObj('StAppsWebHttpClient', ['request']); const webHttpClientMethodSpy = jasmine.createSpyObj('StAppsWebHttpClient', ['request']);
const ngxLogger: jasmine.SpyObj<NGXLogger> = jasmine.createSpyObj('NGXLogger', ['log', 'error', 'warn']);
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [], imports: [],
@@ -37,6 +39,9 @@ describe('ConfigProvider', () => {
{ {
provide: StAppsWebHttpClient, useValue: webHttpClientMethodSpy, provide: StAppsWebHttpClient, useValue: webHttpClientMethodSpy,
}, },
{
provide: NGXLogger, useValue: ngxLogger,
},
], ],
}); });

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019 StApps * Copyright (C) 2019, 2020 StApps
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free * under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3. * Software Foundation, version 3.
@@ -15,7 +15,7 @@
import {Injectable} from '@angular/core'; import {Injectable} from '@angular/core';
import {Client} from '@openstapps/api/lib/client'; import {Client} from '@openstapps/api/lib/client';
import {SCAppConfiguration, SCIndexResponse} from '@openstapps/core'; import {SCAppConfiguration, SCIndexResponse} from '@openstapps/core';
import {Logger} from '@openstapps/logger'; import {NGXLogger} from 'ngx-logger';
import {environment} from '../../../environments/environment'; import {environment} from '../../../environments/environment';
import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider'; import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider';
import {StorageProvider} from '../storage/storage.provider'; import {StorageProvider} from '../storage/storage.provider';
@@ -55,10 +55,13 @@ export class ConfigProvider {
/** /**
* Constructor, initialise api client * Constructor, initialise api client
* *
* @param storageProvider StorageProvider to load persistet configuration * @param storageProvider StorageProvider to load persistent configuration
* @param swHttpClient Api client * @param swHttpClient Api client
* @param logger An angular logger
*/ */
constructor(private readonly storageProvider: StorageProvider, swHttpClient: StAppsWebHttpClient) { constructor(private readonly storageProvider: StorageProvider,
swHttpClient: StAppsWebHttpClient,
private readonly logger: NGXLogger) {
this.client = new Client(swHttpClient, environment.backend_url, environment.backend_version); this.client = new Client(swHttpClient, environment.backend_url, environment.backend_version);
} }
@@ -109,10 +112,10 @@ export class ConfigProvider {
try { try {
this.config = await this.loadLocal(); this.config = await this.loadLocal();
this.initialised = true; this.initialised = true;
Logger.log(`initialised configuration from storage`); this.logger.log(`initialised configuration from storage`);
if (this.config.backend.SCVersion !== environment.backend_version) { if (this.config.backend.SCVersion !== environment.backend_version) {
loadError = new WrongConfigVersionInStorage(environment.backend_version, this.config.backend.SCVersion); loadError = new WrongConfigVersionInStorage(environment.backend_version, this.config.backend.SCVersion);
Logger.warn(loadError); this.logger.warn(loadError);
} }
} catch (error) { } catch (error) {
loadError = error; loadError = error;
@@ -122,7 +125,7 @@ export class ConfigProvider {
const fetchedConfig: SCIndexResponse = await this.fetch(); const fetchedConfig: SCIndexResponse = await this.fetch();
await this.set(fetchedConfig); await this.set(fetchedConfig);
this.initialised = true; this.initialised = true;
Logger.log(`initialised configuration from remote`); this.logger.log(`initialised configuration from remote`);
} catch (error) { } catch (error) {
fetchError = error; fetchError = error;
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2018, 2019, 2020 StApps * Copyright (C) 2018-2020 StApps
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free * under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3. * Software Foundation, version 3.
@@ -21,7 +21,7 @@ import {
SCSearchSort, SCSearchSort,
SCThing, SCThing,
} from '@openstapps/core'; } from '@openstapps/core';
import {Logger} from '@openstapps/logger'; import {NGXLogger} from 'ngx-logger';
import {Subject} from 'rxjs'; import {Subject} from 'rxjs';
import {debounceTime, distinctUntilChanged} from 'rxjs/operators'; import {debounceTime, distinctUntilChanged} from 'rxjs/operators';
import {MenuService} from '../../menu/menu.service'; import {MenuService} from '../../menu/menu.service';
@@ -82,12 +82,15 @@ export class DataListComponent implements OnInit {
* @param alertController AlertController * @param alertController AlertController
* @param dataProvider DataProvider * @param dataProvider DataProvider
* @param menuService MenuService * @param menuService MenuService
* @param settingsProvider SettingsProvider
* @param logger An angular logger
*/ */
constructor( constructor(
private readonly alertController: AlertController, private readonly alertController: AlertController,
private dataProvider: DataProvider, private readonly dataProvider: DataProvider,
private readonly menuService: MenuService, private readonly menuService: MenuService,
private readonly settingsProvider: SettingsProvider, private readonly settingsProvider: SettingsProvider,
private readonly logger: NGXLogger,
) { ) {
this.queryTextChanged this.queryTextChanged
.pipe( .pipe(
@@ -116,7 +119,7 @@ export class DataListComponent implements OnInit {
this.settingsProvider.settingsActionChanged$.subscribe(({type, payload}) => { this.settingsProvider.settingsActionChanged$.subscribe(({type, payload}) => {
if (type === 'stapps.settings.changed') { if (type === 'stapps.settings.changed') {
const {category, name, value} = payload!; const {category, name, value} = payload!;
Logger.log(`received event "settings.changed" with category: this.logger.log(`received event "settings.changed" with category:
${category}, name: ${name}, value: ${JSON.stringify(value)}`); ${category}, name: ${name}, value: ${JSON.stringify(value)}`);
} }
}, },

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2018, 2019 StApps * Copyright (C) 2018-2020 StApps
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free * under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3. * Software Foundation, version 3.
@@ -15,7 +15,7 @@
import {Component} from '@angular/core'; import {Component} from '@angular/core';
import {LangChangeEvent, TranslateService} from '@ngx-translate/core'; import {LangChangeEvent, TranslateService} from '@ngx-translate/core';
import {SCAppConfigurationMenuCategory, SCLanguage, SCThingTranslator, SCTranslations} from '@openstapps/core'; import {SCAppConfigurationMenuCategory, SCLanguage, SCThingTranslator, SCTranslations} from '@openstapps/core';
import {Logger} from '@openstapps/logger'; import {NGXLogger} from 'ngx-logger';
import {ConfigProvider} from '../../config/config.provider'; import {ConfigProvider} from '../../config/config.provider';
/** /**
@@ -46,8 +46,9 @@ export class NavigationComponent {
*/ */
translator: SCThingTranslator; translator: SCThingTranslator;
constructor(private configProvider: ConfigProvider, constructor(private readonly configProvider: ConfigProvider,
public translateService: TranslateService) { public translateService: TranslateService,
private readonly logger: NGXLogger) {
this.loadMenuEntries(); this.loadMenuEntries();
translateService.onLangChange.subscribe((event: LangChangeEvent) => { translateService.onLangChange.subscribe((event: LangChangeEvent) => {
this.language = event.lang as keyof SCTranslations<SCLanguage>; this.language = event.lang as keyof SCTranslations<SCLanguage>;
@@ -63,7 +64,7 @@ export class NavigationComponent {
try { try {
this.menu = await this.configProvider.getValue('menus') as SCAppConfigurationMenuCategory[]; this.menu = await this.configProvider.getValue('menus') as SCAppConfigurationMenuCategory[];
} catch (error) { } catch (error) {
Logger.error(`error from loading menu entries: ${error}`); this.logger.error(`error from loading menu entries: ${error}`);
} }
} }

View File

@@ -14,7 +14,6 @@
*/ */
import {enableProdMode} from '@angular/core'; import {enableProdMode} from '@angular/core';
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {Logger} from '@openstapps/logger';
import {AppModule} from './app/app.module'; import {AppModule} from './app/app.module';
import {environment} from './environments/environment'; import {environment} from './environments/environment';
@@ -24,4 +23,5 @@ if (environment.production) {
platformBrowserDynamic() platformBrowserDynamic()
.bootstrapModule(AppModule) .bootstrapModule(AppModule)
.catch(async (err) => await Logger.error(err)); // tslint:disable-next-line:no-console
.catch(async (err) => console.error(err));