为了清楚起见,我更新了问题(根据要求)。
我使用布法罗框架。我在日志中有很多消息,通知互联网上的某人试图访问不存在的端点或使用该服务不支持的 HTTP 方法。我认为,这些消息来自布法罗的路由器(绝对不是来自我的代码)。下面是一个消息示例:"找不到方法:HEAD/some/path"。
问题:如何将这些消息的优先级从"错误"更改为"通知"或"信息"。在我看来,对于指示客户端错误的消息来说,这样的高优先级是一个糟糕的选择,而不是在我的代码中。
原创内容:
为什么像"找不到方法:HEAD/some/path"这样的消息以"错误"优先级记录?如何将此类消息的优先级更改为"通知"或"信息"?原因:我不喜欢每次互联网上的某个孩子在我的网站上尝试新脚本时都被吵醒。
这是我的路由器配置:
app.GET("/{path:.+}", fs)
app.GET("/", fs)
fs
是常规的http.Handler
用buffalo.WrapHandler()
包装的。
我深入研究了代码,似乎没有简单的方法可以做我想做的事情(没有配置选项)。
但是可以提供自定义错误处理程序:
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 行长,根据请求的内容类型和运行应用程序的环境(开发、测试、生产)提供不同的行为。而且它不能轻易复制和粘贴,因为它使用私有函数和类型。
似乎我需要要求新功能。