【日記】按照技术书的方法做,没有成功的温斯顿被勉强弄好了
最近我读了这本书,学习了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"}
这是整篇文本。
明显地,我无法认为它在正常运行,但是我也不清楚哪里出错了,所以我暂时放弃解决这个问题。