[英]How to add custom function to Winston logger in Typescript?
這個問題與 Winston Logger 有關,但可以適用於任何其他情況。 我有以下代碼:
import winston, {Logger} from 'winston';
interface CustomLogger extends Logger {
setLoggerContext(userId: string): void;
}
const logger: CustomLogger = winston.createLogger({
transports: [new winston.transports.Console()],
});
logger.setLoggerContext = (userId: string) => {
logger.defaultMeta = {userId: userId}
}
export default logger;
但是,const logger 是紅色的,並顯示一條錯誤消息:
“Logger”類型中缺少“setLoggerContext”屬性,但“CustomLogger”類型中需要。ts(2741)
我想保護人們不要把他們想要的 defaultMeta 放在他們想要的東西上,我真的需要為此自定義函數,因為稍后我們可能會用其他東西改變 winston,所以我想要一個自定義上下文設置器。
簡單的一次性構造兩個接口的交集(TypeScript看不出你最終構造了符合CustomLogger
接口的東西,它只考慮const logger: CustomLogger
行):
const CustomLoggerMixin = {
setLoggerContext(userId: string) {
logger.defaultMeta = {userId: userId};
}
};
const logger: CustomLogger = Object.assign(
winston.createLogger({
transports: [new winston.transports.Console()],
}),
CustomLoggerMixin
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.