【问题标题】:Deno: Disable warning logs (WARN) in consoleDeno:在控制台中禁用警告日志 (WARN)
【发布时间】:2020-06-19 05:34:49
【问题描述】:

我是 Deno 的新手,我看到 Deno 在控制台中显示所有警告日志 (WARN)。 是否有禁用此行为的选项?

更新: 最终,我认为我需要能够为它的 consoleHandler 更改 Deno 的默认记录器的日志级别。 例如,当我使用 Deno 的 fetch API 时,我不想看到很多关于请求/响应大小等的警告。

【问题讨论】:

  • 你在控制台中得到什么警告,你能添加更多信息来提问吗?
  • tnx 为您的评论,我更新了这个问题。我说的是 Deno 显示的所有警告(至少对于它的标准库而言)。

标签: deno


【解决方案1】:

我还没有测试过,但我想这是你在运行代码时可以传递的选项

-L, --log-level <log-level>
            Set log level [possible values: debug, info]

另外,请查看 official 文档中的代码 sn-p 以自定义记录器

import * as log from "https://deno.land/std/log/mod.ts";

// Simple default logger out of the box. You can customize it
// by overriding logger and handler named "default", or providing
// additional logger configurations. You can log any data type.
log.debug("Hello world");
log.info(123456);
log.warning(true);
log.error({ foo: "bar", fizz: "bazz" });
log.critical("500 Internal server error");

// custom configuration with 2 loggers (the default and `tasks` loggers)
await log.setup({
  handlers: {
    console: new log.handlers.ConsoleHandler("DEBUG"),

    file: new log.handlers.FileHandler("WARNING", {
      filename: "./log.txt",
      // you can change format of output message using any keys in `LogRecord`
      formatter: "{levelName} {msg}",
    }),
  },

  loggers: {
    // configure default logger available via short-hand methods above
    default: {
      level: "DEBUG",
      handlers: ["console", "file"],
    },

    tasks: {
      level: "ERROR",
      handlers: ["console"],
    },
  },
});

let logger;

// get default logger
logger = log.getLogger();
logger.debug("fizz"); // logs to `console`, because `file` handler requires "WARNING" level
logger.warning(41256); // logs to both `console` and `file` handlers

// get custom logger
logger = log.getLogger("tasks");
logger.debug("fizz"); // won't get output because this logger has "ERROR" level
logger.error({ productType: "book", value: "126.11" }); // log to `console`

// if you try to use a logger that hasn't been configured
// you're good to go, it gets created automatically with level set to 0
// so no message is logged
const unknownLogger = log.getLogger("mystery");
unknownLogger.info("foobar"); // no-op

【讨论】:

  • tnx 为您解答。对于您的第一个解决方案,我已经知道了,不幸的是,可用的选项不足以满足我的需要; “info”是默认值,“debug”更糟糕的是在控制台中显示大量信息。对于第二种解决方案,我也知道,它描述了如何使用 Deno 标准库的 log 模块定义自定义记录器,我认为它不会改变默认记录器的行为。
【解决方案2】:

Fen 框架可以做到这一点:here is link

【讨论】:

  • tnx 为您解答。但我需要更改 Deno 标准库的默认记录器中的日志级别。我没有使用任何其他框架 atm。
猜你喜欢
  • 2017-04-27
  • 2022-07-15
  • 2020-04-01
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多