我设置了3个传输:控制台,文件和日志(使用https://github.com/loggly/winston-loggly-bulk)。
虽然控制台和文件传输可以正常记录,但我的Loggly传输只记录了我最初的“服务器侦听端口3001”日志,而没有记录其他日志,我不明白为什么。
logger-utils.ts:
import * as winston from 'winston';
import { Loggly } from 'winston-loggly-bulk';
export const createLogger = () => {
return winston.createLogger({
format: winston.format.combine(
winston.format.errors({ stack: true }),
winston.format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss ZZ',
}),
winston.format.json(),
),
transports: [
new winston.transports.Console({
level: process.env.LOGGING_LEVEL,
}),
new winston.transports.File({ filename: `logs/my-app.log` }),
new Loggly({
token: '<token>',
subdomain: '<subdomain>',
tags: ['Winston-NodeJS'],
json: true,
}),
],
});
};logger.ts:
import { createLogger } from './logger-utils';
const logger = createLogger();
export default logger;server.ts:
import app from './modules/app/app';
import logger from './core/logger/logger';
app.listen(PORT, () => {
logger.info(`Server listening on port ${3001}`);
});app.middleware.ts:
import logger from '../../core/logger/logger';
export const initializeApp = async (ctx: AppContext) => {
logger.info('initializeApp', { ctx });
....因此,我启动了服务器并运行了一个流,当我检查控制台和文件时,我看到它记录了server.ts和app.middleware.ts中的消息,但当我检查我的Loggly仪表板时,我只看到来自server.ts的日志。
我感觉我遗漏了一些非常明显的东西,但我不明白为什么它不能将我的信息记录在app.middleware.ts中,尽管我在server.ts中记录了我的东西,当我考虑到控制台和文件传输都正确地记录了一切时,它就更没有意义了。
关于如何修复这个问题,让我的Loggly传输像其他传输一样工作,你有什么想法吗?
发布于 2020-01-09 01:55:26
ctx对象内部有循环引用,可能在Loggly结尾序列化失败。没有ctx对象的日志记录应该可以解决这个问题。
https://stackoverflow.com/questions/59638787
复制相似问题