我正在为我的Winston记录器实现一个漂亮的格式,想知道是否可以使用Node.js方法console.table来获取“字符串”?这个方法是无效的,但是有没有什么方法可以用字符串表示呢?
console.table
const tableAsString = console.table([{foo: 'bar'}, {foo: 'bar2'}]) // This does not work, table as string is undefined...
z31licg01#
实际上在NodeJS中有一种简单的方法可以做到这一点您可以构造自己的Console示例并使用自定义输出流。
import { Console } from 'node:console' import { Transform } from 'node:stream' const ts = new Transform({ transform(chunk, enc, cb) { cb(null, chunk) } }) const logger = new Console({ stdout: ts }) function getTable (data) { logger.table(data) return (ts.read() || '').toString() } const str = getTable({foo: 'bar'}) console.log(str.length) // 105 console.log(str) // ┌─────────┬────────┐ // │ (index) │ Values │ // ├─────────┼────────┤ // │ foo │ 'bar' │ // └─────────┴────────┘
我创建了一个名为:Not a log在Proxy的帮助下完成了这一点,使Console示例上的所有方法仅用20行代码就返回一个字符串!用途:
import logger from 'not-a-log' const string = logger.table([{foo: 'bar'}, {foo: 'bar2'}]) const count = logger.count('made a request') const foo = logger.log('identity foo')
1条答案
按热度按时间z31licg01#
实际上在NodeJS中有一种简单的方法可以做到这一点
您可以构造自己的Console示例并使用自定义输出流。
我创建了一个名为:Not a log在Proxy的帮助下完成了这一点,使Console示例上的所有方法仅用20行代码就返回一个字符串!用途: