Loggly 的 Winston 传输无法始终如一地工作
Winston transport for Loggly not working consistently
我为 Winston 设置了 3 个传输:控制台、文件和 Loggly(使用 https://github.com/loggly/winston-loggly-bulk)。
虽然控制台和文件传输记录正确,但我的 Loggly 传输只记录我的初始 "Server listening on port 3001" 日志,没有其他记录,我不明白为什么。
记录器-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 传输像其他传输一样工作的任何想法?
ctx
对象内部有循环引用,可能在 Loggly 端序列化失败。没有 ctx
对象的日志应该可以解决这个问题。
我为 Winston 设置了 3 个传输:控制台、文件和 Loggly(使用 https://github.com/loggly/winston-loggly-bulk)。
虽然控制台和文件传输记录正确,但我的 Loggly 传输只记录我的初始 "Server listening on port 3001" 日志,没有其他记录,我不明白为什么。
记录器-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 传输像其他传输一样工作的任何想法?
ctx
对象内部有循环引用,可能在 Loggly 端序列化失败。没有 ctx
对象的日志应该可以解决这个问题。