对于部署在ECS容器中的node.js应用程序没有可见的日志消息

问题描述

我已经开发了一个node.js应用程序,它在本地日志中的正常工作在终端上可以正常显示,如图所示:

enter image description here

当我们将应用程序作为docker容器部署到Amazon ECS时,cloudwatch中没有日志消息。

我尝试使用bunyan以及winston日志记录模块进行日志记录,但是都没有结果。

logger.js文件内容为:

const bunyan = require('bunyan');

const logger = bunyan.createLogger({
  name: 'appname-api',outputCapture: 'std'
});

module.exports = logger;

根目录下索引文件内容如下:

const config = require('./config/config');
const logger = require('./app/utils/logger');
const dbOperations = require('./config/data-source');

console.log('Before anonymous function');

process.on('uncaughtException',function (err) {
  console.log('Uncaught exception thrown',err);
  process.exit(1);
});

// (async () => {
try {
  console.log('Inside anonymous function try block');
  logger.info('Connecting to database');
  // await 
  dbOperations.initializeDatabase()
    .then(() => {
      logger.info('DB connection successful');
    })
    .catch(err => {
      logger.error(err);
    });
  logger.info('Connected to database');

  // Init the express application
  const app = require('./config/express')(config);

  // Start the app by listening on <port>
  const server = app.listen(config.port);

  server.keepAliveTimeout = 61000;

  server.headersTimeout = 65000;

  // Expose app
  exports = module.exports = app;

  // Logging initialization
  logger.info(`API Server started on port ${config.port}`);

} catch (err) {
  console.log('Some error occoured',err);
  logger.error('Error starting server ',err);
}
// })();

console.log('After anonymous function');

下面附有cloudwatch日志屏幕截图(其中没有显示一条日志消息)

enter image description here

我们的开发人员尝试将另一个项目部署到相同的ECS中,在这种情况下,日志按预期发送。

Docker文件内容

FROM node:12

workdir /folder-api

RUN apt-get update

RUN apt-get install -y jq python-pip libpython-dev
RUN pip install --upgrade awscli

ADD package.json .
RUN npm install

ADD . /folder-api

RUN ["chmod","+x","/folder-api/entrypoint.sh"]

我看不到这里出了什么问题,请让我看看是否忽略了某些内容

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)