[英]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.