ing
This commit is contained in:
parent
6edb85aa07
commit
520470fd93
6
src/@loafer/ng-logger/core/config.ts
Normal file
6
src/@loafer/ng-logger/core/config.ts
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
import { LoggerLevel } from './type';
|
||||||
|
|
||||||
|
export interface LoggerConfig {
|
||||||
|
level: LoggerLevel;
|
||||||
|
serverLogLevel?: LoggerLevel;
|
||||||
|
}
|
3
src/@loafer/ng-logger/core/index.ts
Normal file
3
src/@loafer/ng-logger/core/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
export * from './config';
|
||||||
|
export * from './token';
|
||||||
|
export * from './type';
|
3
src/@loafer/ng-logger/core/token.ts
Normal file
3
src/@loafer/ng-logger/core/token.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import { InjectionToken } from '@angular/core';
|
||||||
|
|
||||||
|
export const _LOGGER_CONFIG = new InjectionToken('@loafer/ng-logger Internal Logger config');
|
26
src/@loafer/ng-logger/core/type.ts
Normal file
26
src/@loafer/ng-logger/core/type.ts
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
export enum LoggerLevel {
|
||||||
|
TRACE = 0,
|
||||||
|
DEBUG,
|
||||||
|
INFO,
|
||||||
|
LOG,
|
||||||
|
WARN,
|
||||||
|
ERROR,
|
||||||
|
OFF,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const LoggerLevelName = [
|
||||||
|
'TRACE',
|
||||||
|
'DEBUG',
|
||||||
|
'INFO',
|
||||||
|
'LOG',
|
||||||
|
'WARN',
|
||||||
|
'ERROR',
|
||||||
|
'OFF'
|
||||||
|
];
|
||||||
|
|
||||||
|
export interface ServerLoggingParameter {
|
||||||
|
level: string;
|
||||||
|
message: string;
|
||||||
|
addtional?: string;
|
||||||
|
timestamp: Date;
|
||||||
|
}
|
1
src/@loafer/ng-logger/index.ts
Normal file
1
src/@loafer/ng-logger/index.ts
Normal file
|
@ -0,0 +1 @@
|
||||||
|
export * from './ng-logger.module';
|
65
src/@loafer/ng-logger/ng-logger.module.ts
Normal file
65
src/@loafer/ng-logger/ng-logger.module.ts
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
import {
|
||||||
|
NgModule,
|
||||||
|
ModuleWithProviders,
|
||||||
|
Type,
|
||||||
|
Inject,
|
||||||
|
InjectionToken,
|
||||||
|
} from '@angular/core';
|
||||||
|
|
||||||
|
import {
|
||||||
|
_LOGGER_CONFIG,
|
||||||
|
LoggerConfig,
|
||||||
|
} from './core';
|
||||||
|
|
||||||
|
import {
|
||||||
|
SERVICES, LoggerService,
|
||||||
|
} from './service';
|
||||||
|
|
||||||
|
export interface LoggerFeatureModuleConfig {
|
||||||
|
url?: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LoggerRootModuleConfig {
|
||||||
|
config: LoggerConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NgModule({})
|
||||||
|
export class LoggerRootModule {
|
||||||
|
constructor(
|
||||||
|
private loggerService: LoggerService,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@NgModule({})
|
||||||
|
export class LoggerFeatureModule {
|
||||||
|
constructor(
|
||||||
|
private loggerService: LoggerService,
|
||||||
|
private root: LoggerRootModule,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@NgModule({})
|
||||||
|
export class LoggerModule {
|
||||||
|
static forRoot(config: LoggerRootModuleConfig): ModuleWithProviders {
|
||||||
|
return {
|
||||||
|
ngModule: LoggerRootModule,
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: _LOGGER_CONFIG,
|
||||||
|
useValue: config.config,
|
||||||
|
},
|
||||||
|
SERVICES,
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
static forFeature(config: LoggerFeatureModuleConfig): ModuleWithProviders {
|
||||||
|
return {
|
||||||
|
ngModule: LoggerFeatureModule,
|
||||||
|
providers: [
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
7
src/@loafer/ng-logger/service/index.ts
Normal file
7
src/@loafer/ng-logger/service/index.ts
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
export * from './logger.service';
|
||||||
|
|
||||||
|
import { LoggerService } from './logger.service';
|
||||||
|
|
||||||
|
export const SERVICES = [
|
||||||
|
LoggerService,
|
||||||
|
];
|
116
src/@loafer/ng-logger/service/logger.service.ts
Normal file
116
src/@loafer/ng-logger/service/logger.service.ts
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
import { Injectable, Inject, PLATFORM_ID } from '@angular/core';
|
||||||
|
import { isPlatformBrowser } from '@angular/common';
|
||||||
|
|
||||||
|
import {
|
||||||
|
LoggerConfig,
|
||||||
|
LoggerLevel,
|
||||||
|
LoggerLevelName,
|
||||||
|
_LOGGER_CONFIG,
|
||||||
|
} from '../core';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class LoggerService {
|
||||||
|
private _isIE: boolean;
|
||||||
|
|
||||||
|
public constructor(
|
||||||
|
@Inject(_LOGGER_CONFIG) private readonly config: LoggerConfig,
|
||||||
|
@Inject(PLATFORM_ID) private readonly platformId,
|
||||||
|
) {
|
||||||
|
this._isIE = isPlatformBrowser(platformId) &&
|
||||||
|
!!(navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.match(/Trident\//) || navigator.userAgent.match(/Edge\//));
|
||||||
|
}
|
||||||
|
|
||||||
|
public trace(message, ...additional: any[]): void {
|
||||||
|
this._log(LoggerLevel.TRACE, message, additional);
|
||||||
|
}
|
||||||
|
|
||||||
|
public debug(message, ...additional: any[]): void {
|
||||||
|
this._log(LoggerLevel.DEBUG, message, additional);
|
||||||
|
}
|
||||||
|
|
||||||
|
public info(message, ...additional: any[]): void {
|
||||||
|
this._log(LoggerLevel.INFO, message, additional);
|
||||||
|
}
|
||||||
|
|
||||||
|
public log(message, ...additional: any[]): void {
|
||||||
|
this._log(LoggerLevel.LOG, message, additional);
|
||||||
|
}
|
||||||
|
|
||||||
|
public warn(message, ...additional: any[]): void {
|
||||||
|
this._log(LoggerLevel.WARN, message, additional);
|
||||||
|
}
|
||||||
|
|
||||||
|
public error(message, ...additional: any[]): void {
|
||||||
|
this._log(LoggerLevel.ERROR, message, additional);
|
||||||
|
}
|
||||||
|
|
||||||
|
private _timestamp(): string {
|
||||||
|
return new Date().toISOString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private _log(level: LoggerLevel, message, additional: any[] = []): void {
|
||||||
|
if (!message) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow logging on server even if client log level is off
|
||||||
|
// if (logOnServer) {
|
||||||
|
// this._logOnServer(level, message, additional);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if no message or the log level is less than the environ
|
||||||
|
if (level < this.config.level) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
message = typeof message === 'string' ? message : JSON.stringify(message, null, 2);
|
||||||
|
} catch (e) {
|
||||||
|
additional = [message, ...additional];
|
||||||
|
message = 'The provided "message" value could not be parsed with JSON.stringify().';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Coloring doesn't work in IE
|
||||||
|
if (this._isIE) {
|
||||||
|
return this._logIE(level, message, additional);
|
||||||
|
}
|
||||||
|
|
||||||
|
const color = this._getColor(level);
|
||||||
|
|
||||||
|
console.log(`%c${this._timestamp()} [${LoggerLevelName[level]}]`, `color:${color}`, message, ...additional);
|
||||||
|
}
|
||||||
|
|
||||||
|
private _logIE(level: LoggerLevel, message: string, additional: any[] = []): void {
|
||||||
|
switch (level) {
|
||||||
|
case LoggerLevel.WARN:
|
||||||
|
console.warn(`${this._timestamp()} [${LoggerLevelName[level]}] `, message, ...additional);
|
||||||
|
break;
|
||||||
|
case LoggerLevel.ERROR:
|
||||||
|
console.error(`${this._timestamp()} [${LoggerLevelName[level]}] `, message, ...additional);
|
||||||
|
break;
|
||||||
|
case LoggerLevel.INFO:
|
||||||
|
console.log(`${this._timestamp()} [${LoggerLevelName[level]}] `, message, ...additional);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(`${this._timestamp()} [${LoggerLevelName[level]}] `, message, ...additional);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private _getColor(level: LoggerLevel): 'blue' | 'teal' | 'gray' | 'red' | undefined {
|
||||||
|
switch (level) {
|
||||||
|
case LoggerLevel.TRACE:
|
||||||
|
return 'blue';
|
||||||
|
case LoggerLevel.DEBUG:
|
||||||
|
return 'teal';
|
||||||
|
case LoggerLevel.INFO:
|
||||||
|
case LoggerLevel.LOG:
|
||||||
|
return 'gray';
|
||||||
|
case LoggerLevel.WARN:
|
||||||
|
case LoggerLevel.ERROR:
|
||||||
|
return 'red';
|
||||||
|
case LoggerLevel.OFF:
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -62,7 +62,3 @@ export class RESTModule {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createSourceInstances(...instances: any[]) {
|
|
||||||
return instances;
|
|
||||||
}
|
|
||||||
|
|
22
src/app/app-logger.module.ts
Normal file
22
src/app/app-logger.module.ts
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { LoggerModule } from '@loafer/ng-logger';
|
||||||
|
import { LoggerLevel } from '@loafer/ng-logger/core';
|
||||||
|
|
||||||
|
import { environment } from '../environments/environment';
|
||||||
|
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
exports: [
|
||||||
|
LoggerModule,
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
LoggerModule.forRoot({
|
||||||
|
config: {
|
||||||
|
level: LoggerLevel.DEBUG,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class AppLoggerModule { }
|
|
@ -14,6 +14,7 @@ import { AppStoreModule } from './app-store.module';
|
||||||
import { AppL10NModule } from './app-l10n.module';
|
import { AppL10NModule } from './app-l10n.module';
|
||||||
import { AppRPCModule } from './app-rpc.module';
|
import { AppRPCModule } from './app-rpc.module';
|
||||||
import { AppRESTModule } from './app-rest.module';
|
import { AppRESTModule } from './app-rest.module';
|
||||||
|
import { AppLoggerModule } from './app-logger.module';
|
||||||
|
|
||||||
import { MaterialModule } from 'packages/commons/material/material.module';
|
import { MaterialModule } from 'packages/commons/material/material.module';
|
||||||
|
|
||||||
|
@ -25,14 +26,16 @@ import { AuthGuard } from './commons/guard/auth.guard';
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
|
MaterialModule,
|
||||||
|
HttpClientModule,
|
||||||
|
MemberModule,
|
||||||
|
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
AppStoreModule,
|
AppStoreModule,
|
||||||
AppL10NModule,
|
AppL10NModule,
|
||||||
AppRPCModule,
|
AppRPCModule,
|
||||||
AppRESTModule,
|
AppRESTModule,
|
||||||
MaterialModule,
|
AppLoggerModule,
|
||||||
HttpClientModule,
|
|
||||||
MemberModule,
|
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
CookieService,
|
CookieService,
|
||||||
|
|
10
src/packages/discovery/discovery-logger.module.ts
Normal file
10
src/packages/discovery/discovery-logger.module.ts
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { LoggerModule } from '@loafer/ng-logger';
|
||||||
|
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
LoggerModule.forFeature({}),
|
||||||
|
],
|
||||||
|
})
|
||||||
|
export class DiscoveryLoggerModule { }
|
|
@ -8,6 +8,7 @@ import { InputChipModule } from 'packages/commons/component/input-chip/input-chi
|
||||||
|
|
||||||
import { DiscoveryStoreModule } from './discovery-store.module';
|
import { DiscoveryStoreModule } from './discovery-store.module';
|
||||||
import { DiscoveryRPCModule } from './discovery-rpc.module';
|
import { DiscoveryRPCModule } from './discovery-rpc.module';
|
||||||
|
import { DiscoveryLoggerModule } from './discovery-logger.module';
|
||||||
|
|
||||||
import { COMPONENTS } from './component';
|
import { COMPONENTS } from './component';
|
||||||
import { SERVICES } from './service';
|
import { SERVICES } from './service';
|
||||||
|
@ -19,9 +20,10 @@ import { TreeModule } from 'angular-tree-component';
|
||||||
MaterialModule,
|
MaterialModule,
|
||||||
InputChipModule,
|
InputChipModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
|
TreeModule,
|
||||||
DiscoveryStoreModule,
|
DiscoveryStoreModule,
|
||||||
DiscoveryRPCModule,
|
DiscoveryRPCModule,
|
||||||
TreeModule
|
DiscoveryLoggerModule,
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
COMPONENTS
|
COMPONENTS
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
|
||||||
import { Store, select } from '@ngrx/store';
|
import { Store, select } from '@ngrx/store';
|
||||||
|
|
||||||
import { RPCSubscriber } from '@loafer/ng-rpc/decorator';
|
import { RPCSubscriber } from '@loafer/ng-rpc/decorator';
|
||||||
|
import { LoggerService } from '@loafer/ng-logger/service';
|
||||||
|
|
||||||
import * as DiscoverStore from '../store/discover';
|
import * as DiscoverStore from '../store/discover';
|
||||||
|
|
||||||
|
@ -17,18 +18,19 @@ export class DiscoverySubscriber {
|
||||||
|
|
||||||
public constructor(
|
public constructor(
|
||||||
private store: Store<DiscoverStore.State>,
|
private store: Store<DiscoverStore.State>,
|
||||||
|
private loggerService: LoggerService,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@RPCSubscriber({method: 'DiscoveryService.discoveredZone'})
|
@RPCSubscriber({method: 'DiscoveryService.discoveredZone'})
|
||||||
public discoveredZone(zone: Zone): void {
|
public discoveredZone(zone: Zone): void {
|
||||||
console.log(`DiscoverySubscriber.discoveredZone zone:${zone}`);
|
this.loggerService.debug('DiscoverySubscriber.discoveredZone zone:', zone);
|
||||||
|
|
||||||
this.store.dispatch(new DiscoverStore.DiscoveredZone(zone));
|
this.store.dispatch(new DiscoverStore.DiscoveredZone(zone));
|
||||||
}
|
}
|
||||||
@RPCSubscriber({method: 'DiscoveryService.discoveredHost'})
|
@RPCSubscriber({method: 'DiscoveryService.discoveredHost'})
|
||||||
public discoveredHost(host: Host): void {
|
public discoveredHost(host: Host): void {
|
||||||
console.log(`DiscoverySubscriber.discoveredHost host:${host}`);
|
this.loggerService.debug('DiscoverySubscriber.discoveredHost host:', host);
|
||||||
|
|
||||||
this.store.dispatch(new DiscoverStore.DiscoveredHost(host));
|
this.store.dispatch(new DiscoverStore.DiscoveredHost(host));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user