This module is intended for use with Golemio services. Refer here for further information on usage, local development and more.
Installation
The APIs may be unstable. Therefore, we recommend to install this module as an exact version.
npm install --save-exact @golemio/audit-logs@latest
npm install --save-exact @golemio/audit-logs@dev
Setup
For local integration tests, run database migrations with the audit_logs
schema.
npx golemio migrate-db up --postgres --schema audit_logs
Usage
For information on how to use this module with default module schema migrations, see golemio-cli docs.
Configuring the database schema to use for audit logging using dependency injection:
import { AuditLogsContainer } from "@golemio/audit-logs";
import { IDatabaseConnector } from "@golemio/core/dist/helpers/data-access/postgres/IDatabaseConnector";
import { ILogger } from "@golemio/core/dist/helpers";
import { instanceCachingFactory } from "@golemio/core/dist/shared/tsyringe";
YourModuleContainer.register("your_audit_logs_token", {
useFactory: instanceCachingFactory<AuditLogger>((c) => {
return new AuditLogger(
YourModuleContainer.resolve<IDatabaseConnector>("your_database_connector_token"),
YourModuleContainer.resolve<ILogger>("your_logger_token"),
{ schema: "your_module_database_schema" }
);
}),
});
The audit logger can then be used as follows:
import { inject } from "@golemio/core/dist/shared/tsyringe";
import { AuditLogger } from "@golemio/audit-logs";
export class YourClass {
constructor(@inject("your_audit_logs_token") private auditLogger: AuditLogger) {}
async someMethod() {
await this.auditLogger.log({ action: "test-action", entity: "test-entity", userId: "test-user-id" });
}
}
Note that logging can be used only after your database connector has been connected to the database.