feat(logs): enable dynamic log rotation with database state management

This commit is contained in:
Mauricio Siu
2025-03-01 20:55:18 -06:00
parent 5dc5292928
commit 0ad9233087

View File

@@ -1,6 +1,8 @@
import { IS_CLOUD, paths } from "@dokploy/server/constants"; import { IS_CLOUD, paths } from "@dokploy/server/constants";
import { type RotatingFileStream, createStream } from "rotating-file-stream"; import { type RotatingFileStream, createStream } from "rotating-file-stream";
import { execAsync } from "../process/execAsync"; import { execAsync } from "../process/execAsync";
import { findAdmin } from "@dokploy/server/services/admin";
import { updateUser } from "@dokploy/server/services/user";
class LogRotationManager { class LogRotationManager {
private static instance: LogRotationManager; private static instance: LogRotationManager;
@@ -28,19 +30,18 @@ class LogRotationManager {
} }
private async getStateFromDB(): Promise<boolean> { private async getStateFromDB(): Promise<boolean> {
// const setting = await db.query.admins.findFirst({}); const admin = await findAdmin();
// return setting?.enableLogRotation ?? false; return admin?.user.enableLogRotation ?? false;
return false;
} }
private async setStateInDB(_active: boolean): Promise<void> { private async setStateInDB(active: boolean): Promise<void> {
// const admin = await db.query.admins.findFirst({}); const admin = await findAdmin();
// if (!admin) { if (!admin) {
// return; return;
// } }
// await updateAdmin(admin?.authId, { await updateUser(admin.user.id, {
// enableLogRotation: active, enableLogRotation: active,
// }); });
} }
private async activateStream(): Promise<void> { private async activateStream(): Promise<void> {
@@ -74,26 +75,26 @@ class LogRotationManager {
} }
public async activate(): Promise<boolean> { public async activate(): Promise<boolean> {
// const currentState = await this.getStateFromDB(); const currentState = await this.getStateFromDB();
// if (currentState) { if (currentState) {
// return true; return true;
// } }
// await this.setStateInDB(true); await this.setStateInDB(true);
// await this.activateStream(); await this.activateStream();
return true; return true;
} }
public async deactivate(): Promise<boolean> { public async deactivate(): Promise<boolean> {
console.log("Deactivating log rotation..."); console.log("Deactivating log rotation...");
// const currentState = await this.getStateFromDB(); const currentState = await this.getStateFromDB();
// if (!currentState) { if (!currentState) {
// console.log("Log rotation is already inactive in DB"); console.log("Log rotation is already inactive in DB");
// return true; return true;
// } }
// await this.setStateInDB(false); await this.setStateInDB(false);
// await this.deactivateStream(); await this.deactivateStream();
console.log("Log rotation deactivated successfully"); console.log("Log rotation deactivated successfully");
return true; return true;
} }
@@ -113,9 +114,8 @@ class LogRotationManager {
} }
} }
public async getStatus(): Promise<boolean> { public async getStatus(): Promise<boolean> {
// const dbState = await this.getStateFromDB(); const dbState = await this.getStateFromDB();
// return dbState; return dbState;
return false;
} }
} }
export const logRotationManager = LogRotationManager.getInstance(); export const logRotationManager = LogRotationManager.getInstance();