温斯顿记录器返回确切记录的字符串



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

{"message":"New S3!","level":"info"}

我已经测试了控制台日志函数并检查温斯顿中的某些包函数,到目前为止找不到任何返回它的方法。

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-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, ....);

Winston记录器并不是为了做你想要实现的事情而设计的,而且你正在尝试做的事情几乎没有任何用例,所以我怀疑Winston会有这个功能。

相关内容

最新更新