74 lines
2.6 KiB
TypeScript
74 lines
2.6 KiB
TypeScript
import { Component, Vue, Watch } from 'vue-property-decorator';
|
|
import NavBar from '@/views/NavBar.vue';
|
|
import { logService, LogLevel, ApiLogAppender, ConsoleLogAppender } from '@/services/logging';
|
|
import { authStore } from '@/store';
|
|
import { User } from '@/models';
|
|
|
|
const logger = logService.getLogger('/app');
|
|
|
|
@Component({
|
|
components: {
|
|
NavBar
|
|
}
|
|
})
|
|
export default class App extends Vue {
|
|
|
|
private apiLogAppender!: ApiLogAppender;
|
|
private consoleLogAppender!: ConsoleLogAppender;
|
|
|
|
constructor() {
|
|
super();
|
|
this.configureLoggers();
|
|
}
|
|
|
|
private get authToken(): string | null {
|
|
return authStore.authToken;
|
|
}
|
|
|
|
@Watch('authToken')
|
|
private onAuthTokenChange(val: string | undefined , oldVal: string | undefined) {
|
|
// If the user wasn't logged in initially, or their session expires, we
|
|
// want to catch the new token for our API log appender.
|
|
if (val) { this.apiLogAppender.authToken = val; }
|
|
}
|
|
|
|
private configureLoggers(): void {
|
|
|
|
let commonLevel = LogLevel.WARN;
|
|
if (LogLevel.hasOwnProperty(process.env.VUE_APP_LOG_LEVEL)) {
|
|
commonLevel = (LogLevel[process.env.VUE_APP_LOG_LEVEL] as unknown) as LogLevel;
|
|
}
|
|
|
|
// Because modules like the router will start logging messages before this
|
|
// component is initialized, the console appender is initialized and added
|
|
// in main.ts
|
|
this.consoleLogAppender = logService.ROOT_LOGGER.appenders[0];
|
|
|
|
// We create the API log appender (need credentials anyways)
|
|
this.apiLogAppender = new ApiLogAppender(
|
|
process.env.VUE_APP_PM_API_BASE + '/log/batch',
|
|
this.authToken || '', // user may already be logged in and have a token
|
|
LogLevel.WARN);
|
|
|
|
logService.ROOT_LOGGER.appenders.push(this.apiLogAppender);
|
|
|
|
if (LogLevel.hasOwnProperty(process.env.VUE_APP_API_LOG_LEVEL)) {
|
|
this.apiLogAppender.threshold = (LogLevel[process.env.VUE_APP_API_LOG_LEVEL] as unknown) as LogLevel;
|
|
} else {
|
|
this.apiLogAppender.threshold = commonLevel;
|
|
}
|
|
|
|
if (LogLevel.hasOwnProperty(process.env.VUE_APP_CONSOLE_LOG_LEVEL)) {
|
|
this.consoleLogAppender.threshold = (LogLevel[process.env.VUE_APP_CONSOLE_LOG_LEVEL] as unknown) as LogLevel;
|
|
} else {
|
|
this.consoleLogAppender.threshold = commonLevel;
|
|
}
|
|
|
|
const batchSize = parseInt(process.env.VUE_APP_API_LOG_BATCH_SIZE, 10);
|
|
if (!isNaN(batchSize)) { this.apiLogAppender.batchSize = Math.max(batchSize, 1); }
|
|
|
|
const minTimeInSec = parseInt(process.env.VUE_APP_API_LOG_MIN_TIME_PASSED_IN_SEC, 10);
|
|
if (!isNaN(minTimeInSec)) { this.apiLogAppender.minimumTimePassedInSec = Math.max(minTimeInSec, 1); }
|
|
}
|
|
}
|