我正在使用
创建完全平均堆栈应用程序NodeJs,Angular 6,ExpressJs和MongoDB
我设法创建了一个服务器,并且服务器运行正常,而不是在应用程序中记录错误时使用console.log
,而我决定使用Winston Logger
服务器端
var appRoot = require('app-root-path');
var winston = require('winston');
// define the custom settings for each transport (file, console)
var options = {
file: {
level: 'info',
filename: `${appRoot}/logs/app.log`,
handleExceptions: true,
json: true,
maxsize: 5242880, // 5MB
maxFiles: 5,
colorize: false,
},
console: {
level: 'debug',
handleExceptions: true,
json: false,
colorize: true,
},
};
// instantiate a new Winston Logger with the settings defined above
const logger = winston.createLogger({
transports: [
new winston.transports.File(options.file),
new winston.transports.Console(options.console)
],
exitOnError: false, // do not exit on handled exceptions
});
// create a stream object with a 'write' function that will be used by `morgan`
logger.stream = {
write: function (message, encoding) {
// use the 'info' log level so the output will be picked up by both transports (file and console)
logger.info(message);
},
};
module.exports = logger;
注意:服务器端的Winston可以完美运行
客户端
我想在我的客户端Angle 6应用程序中使用Winston。
示例:在我的组件之一中,我有这个。
import * as logger from "winston";
.........
this.activeRouter.params.subscribe((params) => {
// tslint:disable-next-line:prefer-const
let id = params['id'];
this.moviesService.getReview(id)
.subscribe(review => {
console.log(review);
this.review = review;
});
});
您会看到我正在使用console.log(review)
,而不是控制台日志,而是要使用Winston
。
如何在客户端使用Winston logger
?对于所有这些东西都是新手,将不胜感激。
答案 0 :(得分:1)
是的,但是浏览器的默认传输非常有限。我建议使用https://www.npmjs.com/package/winston-transport-browserconsole
npm install winston-transport-browserconsole -S
易于使用,并支持记录json对象:
import * as winston from "winston";
import BrowserConsole from 'winston-transport-browserconsole';
const level = "debug";
winston.configure({
transports: [
new BrowserConsole(
{
format: winston.format.simple(),
level,
},
),
],
});
winston.debug("DEBUG ", {a: 1, b: "two"});
答案 1 :(得分:1)
是的 - 它可以(技术上)在浏览器中使用。应该是吗?几乎绝对不是(可悲的是)。 Winston 是一个很棒的节点记录器。但是,强调“为节点”。如果你想在客户端使用它,除了 winston 本身,你还需要添加一堆节点 polyfill,这相对于其他客户端记录器来说非常大。在 winston 和那些 polyfill 之间,您将显着增加工件的大小。此外,仅供参考 webpack 5 删除了这些节点 polyfill,因此您需要手动添加它们。
答案 2 :(得分:0)
根据该票证:https://github.com/winstonjs/winston/issues/287,它几乎可以使用浏览器了吗?还是大都准备好了?听起来他们最近开始支持在浏览器环境中登录。