登录 apollo-server 的推荐方式

ank*_*t_m 3 node.js apollo graphql apollo-server

Apollo 服务器似乎没有附带任何类型的日志记录。这使得它很难按原样在生产环境中使用 - 它实际上是盲目的。有没有推荐的方法来启用不同类型的日志?

我特别关注查看详细日志、错误日志(当服务器崩溃/内部组件崩溃时)和其他调试日志。

更新:我已经winston用于记录基本事件。这个问题与详细的日志记录有关——比如记录请求生命周期的各个部分、服务器崩溃、缓存错误等。

Luk*_*kas 5

目前只有实验性 API 用于更精确的日志记录。 https://www.apollographql.com/docs/apollo-server/features/metrics/#granular-logs

const { ApolloServer }  = require('apollo-server');
const LoggingExtension = require('./logging');

const server = new ApolloServer({
  typeDefs,
  resolvers,
  extensions: [() => new LoggingExtension()]
});

server.listen().then(({ url }) => {
  console.log(`  Server ready at ${url}`);
});
Run Code Online (Sandbox Code Playgroud)

查看 apollo 官方 GitHub 上的logging文件示例:https : //github.com/apollographql/apollo-server/blob/8914b135df9840051fe81cc9224b444cfc5b61ab/packages/apollo-server-core/src/logging.ts

我建议创建一个日志扩展并在以下之一中使用:

您将能够根据需要管理您的日志。

  • 按环境打开/关闭(生产/开发/登台/等)
  • 管道日志到文件或 stdout/stderr 或其他
  • 有日志“级别”节点的控制台仅记录到 stdout/stderr

检查这篇文章:https : //www.coreycleary.me/should-you-use-a-logging-framework-or-console-log-in-node/

PS 虽然这是一个实验性的 API,但它可能会被改变。虽然它已经被记录了一点,但它可能不会被彻底改变,但你永远不会知道。我不建议在 atm 上投入太多资源。