feat: custom logger (#13156)

* feat: custom logger

* mock log

* unit test

* FF and jobs loader

* unit test

* add to ResourceLoader

* get from container

* mock

* rm log

* default logger mock

* link loaders, express

* comments

* initialize container as first step

* db conn

* test

* initialize start

* plugin build using default logger

* ignore .medusa

* revert ignroe

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
This commit is contained in:
Carlos R. L. Rodrigues
2025-08-28 15:31:19 +02:00
committed by GitHub
co-authored by Oli Juhl
parent 9412669e65
commit e2213448ac
42 changed files with 471 additions and 210 deletions
@@ -1,5 +1,6 @@
import { Compiler } from "@medusajs/framework/build-tools"
import { logger } from "@medusajs/framework/logger"
export default async function build({ directory }: { directory: string }) {
logger.info("Starting build...")
const compiler = new Compiler(directory, logger)
@@ -1,5 +1,6 @@
import { logger } from "@medusajs/framework/logger"
import type { Logger } from "@medusajs/framework/types"
import {
ContainerRegistrationKeys,
defineMikroOrmCliConfig,
DmlEntity,
dynamicImport,
@@ -11,6 +12,7 @@ import { dirname, join } from "path"
import { MetadataStorage } from "@mikro-orm/core"
import { MikroORM } from "@mikro-orm/postgresql"
import { initializeContainer } from "../../../loaders"
const TERMINAL_SIZE = process.stdout.columns
@@ -18,6 +20,11 @@ const TERMINAL_SIZE = process.stdout.columns
* Generate migrations for all scanned modules in a plugin
*/
const main = async function ({ directory }) {
const container = await initializeContainer(directory, {
skipDbConnection: true,
})
const logger = container.resolve(ContainerRegistrationKeys.LOGGER)
try {
const moduleDescriptors = [] as {
serviceName: string
@@ -46,14 +53,14 @@ const main = async function ({ directory }) {
*/
logger.info("Generating migrations...")
await generateMigrations(moduleDescriptors)
await generateMigrations(moduleDescriptors, logger)
console.log(new Array(TERMINAL_SIZE).join("-"))
logger.log(new Array(TERMINAL_SIZE).join("-"))
logger.info("Migrations generated")
process.exit()
} catch (error) {
console.log(new Array(TERMINAL_SIZE).join("-"))
logger.log(new Array(TERMINAL_SIZE).join("-"))
logger.error(error.message, error)
process.exit(1)
@@ -101,7 +108,8 @@ async function generateMigrations(
serviceName: string
migrationsPath: string
entities: any[]
}[] = []
}[] = [],
logger: Logger
) {
const DB_HOST = process.env.DB_HOST ?? "localhost"
const DB_USERNAME = process.env.DB_USERNAME ?? ""
@@ -1,9 +1,24 @@
import { logger } from "@medusajs/framework/logger"
import { FileSystem } from "@medusajs/framework/utils"
import { join } from "path"
import main from "../../generate"
const logger = {
log: jest.fn(),
info: jest.fn(),
error: jest.fn(),
warn: jest.fn(),
}
jest.mock("@medusajs/framework/logger")
jest.mock("../../../../../loaders", () => {
return {
initializeContainer: jest.fn().mockImplementation(() => {
return {
resolve: jest.fn(() => logger),
}
}),
}
})
describe("plugin-generate", () => {
beforeEach(() => {
@@ -13,6 +28,8 @@ describe("plugin-generate", () => {
.mockImplementation((code?: string | number | null) => {
return code as never
})
jest.mock("@medusajs/framework/logger")
})
afterEach(async () => {
@@ -1,14 +1,18 @@
import path from "path"
import { Compiler } from "@medusajs/framework/build-tools"
import { ContainerRegistrationKeys } from "@medusajs/framework/utils"
import * as swcCore from "@swc/core"
import { execFile } from "child_process"
import { logger } from "@medusajs/framework/logger"
import { Compiler } from "@medusajs/framework/build-tools"
import path from "path"
import { initializeContainer } from "../../loaders"
export default async function developPlugin({
directory,
}: {
directory: string
}) {
const container = await initializeContainer(directory)
const logger = container.resolve(ContainerRegistrationKeys.LOGGER)
let isBusy = false
const compiler = new Compiler(directory, logger)
const parsedConfig = await compiler.loadTSConfigFile()