Skip to content

Commit

Permalink
fix: missing utils reference (#978)
Browse files Browse the repository at this point in the history
  • Loading branch information
louis-menlo authored Aug 5, 2024
1 parent c046ed8 commit 44efcfe
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 59 deletions.
4 changes: 3 additions & 1 deletion cortex-js/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { AppModule } from './app.module';
import { fileManagerService } from './infrastructure/services/file-manager/file-manager.service';
import { ValidationPipe } from '@nestjs/common';
import { TelemetryUsecases } from './usecases/telemetry/telemetry.usecases';
import { cleanLogs } from './utils/logs';
export const getApp = async (host?: string, port?: number) => {
const app = await NestFactory.create(AppModule, {
snapshot: true,
Expand All @@ -25,7 +26,8 @@ export const getApp = async (host?: string, port?: number) => {
enableDebugMessages: true,
}),
);


cleanLogs();
const config = new DocumentBuilder()
.setTitle('Cortex API')
.setDescription(
Expand Down
3 changes: 0 additions & 3 deletions cortex-js/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
import { getApp } from './app';
import chalk from 'chalk';
import { CortexUsecases } from './usecases/cortex/cortex.usecases';
import { cleanLogs } from './utils/log';

/**
* Start the API server
Expand All @@ -19,8 +18,6 @@ export async function start(host?: string, port?: number) {
const sPort = port || process.env.CORTEX_JS_PORT || defaultCortexJsPort;

try {
// Clean log periodically
cleanLogs();
await app.listen(sPort, sHost);
const cortexUsecases = await app.resolve(CortexUsecases);
await cortexUsecases.startCortex();
Expand Down
3 changes: 0 additions & 3 deletions cortex-js/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import {
} from '@/infrastructure/constants/cortex';
import { getApp } from './app';
import chalk from 'chalk';
import { cleanLogs } from './utils/log';

async function bootstrap() {
const app = await getApp();
Expand All @@ -13,8 +12,6 @@ async function bootstrap() {
const port = process.env.CORTEX_JS_PORT || defaultCortexJsPort;

try {
// Clean logs periodically
cleanLogs();
await app.listen(port, host);
console.log(chalk.blue(`Started server at http://${host}:${port}`));
console.log(
Expand Down
50 changes: 0 additions & 50 deletions cortex-js/src/utils/log.ts

This file was deleted.

52 changes: 50 additions & 2 deletions cortex-js/src/utils/logs.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { createReadStream } from 'fs';
import { join } from 'path';
import { createReadStream, existsSync, stat, writeFileSync } from 'fs';
import { createInterface } from 'readline';
import { fileManagerService } from '@/infrastructure/services/file-manager/file-manager.service';

const logCleaningInterval: number = 120000;
let timeout: NodeJS.Timeout | undefined;

/**
* Print the last N lines of a file that contain the word 'ERROR'
Expand Down Expand Up @@ -30,3 +33,48 @@ export async function printLastErrorLines(
errorLines.forEach((line) => console.log(line));
console.log('...');
}

export async function cleanLogs(
maxFileSizeBytes?: number | undefined,
daysToKeep?: number | undefined,
): Promise<void> {
// clear existing timeout
// in case we rerun it with different values
if (timeout) clearTimeout(timeout);
timeout = undefined;

console.log('Validating app logs. Next attempt in ', logCleaningInterval);

const size = maxFileSizeBytes ?? 1 * 1024 * 1024; // 1 MB
const days = daysToKeep ?? 7; // 7 days
const filePath = await fileManagerService.getLogPath();
// Perform log cleaning
const currentDate = new Date();
if (existsSync(filePath))
stat(filePath, (err, stats) => {
if (err) {
console.error('Error getting file stats:', err);
return;
}

// Check size
if (stats.size > size) {
writeFileSync(filePath, '', 'utf8');
} else {
// Check age
const creationDate = new Date(stats.ctime);
const daysDifference = Math.floor(
(currentDate.getTime() - creationDate.getTime()) / (1000 * 3600 * 24),
);
if (daysDifference > days) {
writeFileSync(filePath, '', 'utf8');
}
}
});

// Schedule the next execution with doubled delays
timeout = setTimeout(
() => this.cleanLogs(maxFileSizeBytes, daysToKeep),
logCleaningInterval,
);
}

0 comments on commit 44efcfe

Please sign in to comment.