0

为了清楚起见,我更新了问题(根据要求)。

我使用 Buffalo 框架。我在日志中有很多消息,通知 Internet 上的某个人试图到达不存在的端点或使用服务不支持的 HTTP 方法。我认为,这些消息来自 Buffalo 的路由器(绝对不是来自我的代码)。以下是消息示例:“未找到方法:HEAD /some/path”。

问题:如何将这些消息的优先级从“错误”更改为“通知”或“信息”。在我看来,这样的高优先级对于指示客户端错误的消息是一个糟糕的选择,而不是在我的代码中。

原创内容:

为什么像“method not found: HEAD /some/path”这样的消息会以“error”优先级记录?如何将此类消息的优先级更改为“通知”或“信息”?原因:我不喜欢每次互联网上的一些孩子在我的网站上尝试新脚本时都被吵醒。

这是我的路由器配置:

    app.GET("/{path:.+}", fs)
    app.GET("/", fs)

fshttp.Handler使用buffalo.WrapHandler().

4

1 回答 1

0

我仔细研究了代码,似乎没有简单的方法可以做我想做的事(没有配置选项)。

但是可以提供自定义错误处理程序:

func App() *buffalo.App {
    app = buffalo.New(buffalo.Options{
        // ...
    })
    app.ErrorHandlers[405] = errorHandler
}
func errorHandler(status int, origErr error, c Context) error {
    //...
}

defaultErrorHandler(在未提供自定义时使用)在其第 4 行中将错误消息写入日志。不幸的是,它也做了很多其他的事情。它有 74 行长,根据请求的内容类型和应用程序运行的环境(开发、测试、生产)提供不同的行为。由于它使用私有函数和类型,因此不能轻易复制和粘贴。

好像我需要要求新功能。

于 2020-02-28T12:45:56.610 回答