簡體   English   中英

如何在不使用類的 NestJS 單獨模塊中使用 Winston Logger

[英]How to use Winston Logger in NestJS separate module that doesn't use Classes

我嘗試了幾種不同的方法來做到這一點。

我目前無法將 Winston 設置為 NestJS 的默認記錄器,因為它抱怨“getTimestamp”function 不在實例中。

所以 - 對於 NestJS 中的控制器 - 我使用了依賴注入 - 它適用於 api ( REST 端點)。

問題是我已經遠離 OOP - 所以我所有的庫都是用 typescript 作為函數編寫的。 不是純函數,但比 OOP 方法更好(錯誤少得多!)

我的問題是 - 我如何訪問沒有類的庫中的主要 winston 記錄器。

我正在使用圖書館nest-winston。

你試過這個嗎?

在應用程序生命周期之外創建記錄器,使用 createLogger function,並將其傳遞給 NestFactory.create ( nest-winston docs )

您可以有一個單獨的文件來創建日志記錄實例,然后將其導入您的模塊/庫以及將其導入您的main.ts

// src/logger/index.ts
import { WinstonModule } from 'nest-winston';

export const myLogger = WinstonModule.createLogger({
  // options (same as WinstonModule.forRoot() options)
})
// src/myLib/index.ts
import { myLogger } from '@/logger' // I like using aliases

export const myLib = () => {
  // ...
  myLogger.log('Yay')
}
// src/main.ts
import { myLogger } from '@/logger' 
async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    logger: myLogger
  });
}
bootstrap();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM