【日記】按照技术书的方法做,没有成功的温斯顿被勉强弄好了

最近我读了这本书,学习了Web应用开发。书中介绍了使用JavaScript进行Web开发,通过Node.js + Express + MongoDB + React来开发Web应用。在书的第二篇中,还介绍了iOS兼容版的开发方法。但我在介绍如何引入名为winston的日志应用的部分遇到了困难。

本书中写到,要定义Winston的配置文件,应按照以下方式进行。

var winston = require('winston')

function Logger(){
  return winston.add(winston.transports.File, (
    filename: "log/warning.log",
    maxsize: 1048576,
    level: "warn"
  });
}

module.exports = new Logger();

如果按照这个步骤创建文件并尝试启动应用程序,将会出现以下错误。

$ node app.js
/Users/anaakikutsushita/Desktop/code/learn-nodejs/hoge/node_modules/winston-transport/legacy.js:18
    throw new Error('Invalid transport, must be an object with a log method.');
    ^

Error: Invalid transport, must be an object with a log method.
    at new LegacyTransportStream (/Users/anaakikutsushita/Desktop/code/learn-nodejs/hoge/node_modules/winston-transport/legacy.js:18:11)
    at DerivedLogger.add (/Users/anaakikutsushita/Desktop/code/learn-nodejs/hoge/node_modules/winston/lib/winston/logger.js:345:11)
    at Object.winston.<computed> [as add] (/Users/anaakikutsushita/Desktop/code/learn-nodejs/hoge/node_modules/winston/lib/winston.js:110:68)
    at new Logger (/Users/anaakikutsushita/Desktop/code/learn-nodejs/hoge/lib/logger.js:4:20)
    at Object.<anonymous> (/Users/anaakikutsushita/Desktop/code/learn-nodejs/hoge/lib/logger.js:12:18)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/Users/anaakikutsushita/Desktop/code/learn-nodejs/hoge/app.js:12:11)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)

通过搜索,我找到了以下解决方法:
无效的传输方式,必须是具有winston mongodb记录方法的对象。

按照这个,将前面提到的 function Logger() 进行以下修改。

function Logger(){
  return winston.add(new winston.transports.File({
    filename: "log/error.log",
    maxsize: 1048576,
    level: "error"
  }));
}

通过这种方式,应用程序能够正常启动,并且生成了日志文件。

然而问题出在这里,没有像技术书中所描述的那样输出详细的日志。
而输出的日志则如下所示,只是一些简单的内容。

{"level":"error"}

这是整篇文本。
明显地,我无法认为它在正常运行,但是我也不清楚哪里出错了,所以我暂时放弃解决这个问题。

广告
将在 10 秒后关闭
bannerAds