Winston Logger返回准确记录的字符串

时间:2019-07-17 11:37:41

标签: javascript node.js winston

我正在使用Winston来为我的节点应用程序进行日志记录。我正在尝试获取Winston登录到日志文件中的确切值。在这种情况下的示例将返回:-

{“消息”:“新S3!”,“级别”:“信息”}

我已经测试过控制台登录该功能并​​检查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);

2 个答案:

答案 0 :(得分:0)

我在测试控制台传输的输出时遇到了相同的问题。因此,该解决方案仅对jest env有效。

我们可以使用there中所述的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, ....);

答案 1 :(得分:0)

Winston记录器并非旨在完成您要实现的目标,并且几乎没有用例说明您要实现的目标,因此我怀疑Winston会具有该功能。