javascript - Winston Logger 返回准确的记录字符串
问题描述
我正在使用 Winston 为我的节点应用程序进行日志记录。我正在尝试准确获取 Winston 登录到日志文件中的值。在这种情况下,它将返回示例:-
{"message":"New S3!","level":"info"}
我已经测试过控制台记录函数并检查winston中的某些包函数,到目前为止找不到任何方法来返回它。
var logger = winston.createLogger({
transports: [
transport, //This is to upload to
new winston.transports.File(options.file), //Will log into file
new winston.transports.Console(options.console) //Will log at console display
]
});
var loggedVal = logger.info('New S3!');
console.log(loggedVal);
解决方案
我在测试控制台传输的输出时遇到了同样的问题。所以该解决方案仅对 jest env 有效。
我们可以使用那里描述的 jest-mock-process 包 或创建简单的间谍
const mockStdoutWrite = jest.spyOn(process.stdout, 'write').mockImplementation(function () { return true; });
const mockStdout = jest.spyOn(console, 'log').mockImplementation(function () { });
logger.debug('Debug message');
expect(mockStdoutWrite).toHaveBeenNthCalledWith(1, ....);
推荐阅读
- c# - 将 FSharpFun 从 C# 传递到 F#
- javascript - 创建取消按钮...如何在 Node/Express.js 中完全中止请求
- azure - Azure:如何在不重新启动应用服务的情况下重新加载环境变量
- swift - Siri Intent Suggested Invocation Phrase 未显示在 ShortcutViewController 中
- c++ - 当我无法启动 CLR 时如何在 C++ 中重新启动 CLR?
- java - 验证用户输入 UUID
- reactjs - 如何在不使用包装器的情况下在 React 中呈现字符串数组?
- llvm - LLVM IR 中函数名后面的“.number”是什么意思?
- java - Importing pom in dependency management
- oracle - Oracle - '表达式类型错误'返回包中记录类型的表