为了账号安全,请及时绑定邮箱和手机立即绑定

如何从日志中获取过去 x 小时的错误计数

如何从日志中获取过去 x 小时的错误计数

Go
MMTTMM 2022-08-09 16:45:24
我正在尝试解析日志文件以获取过去X小时内的错误计数。192.168.0.1 - - [11/Feb/2021:06:42:16 +0000] "POST /a/b/c/d/e HTTP/1.1" 200 28 "-" "-" 9104144117 "example" "http://example:8080" 102ms192.168.0.1 - - [11/Feb/2021:11:42:16 +0000] "POST /a/b/c/d/e HTTP/1.1" 200 28 "-" "-" 9104144155 "example" "http://example2:8080" 91ms192.168.0.1 - - [11/Feb/2021:12:42:16 +0000] "POST /a/b/c/d/e HTTP/1.1" 200 28 "-" "-" 9104144155 "example" "http://example3:8080" 91ms输出:200 2 http://example:8080400 3 http://example2:8080500 10 http://example:8080我想要日志文件中当前时间和X小时时间之间的差异。因此,我可以在最后一小时内收到错误。我尝试使用时间。Parse() 但它不接受日志文件中提到的日期格式。将日志行时间转换为此处提到的特定格式是一个好主意,https://golang.org/pkg/time/#pkg-constants 还是应该将其转换为持续时间?此代码提供了错误的信息。因为格式不正确。    then, _ := time.Parse("01-JAN-1970 00:00:00", "11-Feb-2021 11:42:16")    fmt.Println(then)    lTime := then.Add(-1 * time.Hour)     fmt.Println(lTime)
查看完整描述

1 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

所以为了你的时间。Parse(...) 当您在第一个参数中指定格式时,必须使用非常特定的值。

(抱歉,我不知道这在文档中的位置,我只是在需要引用它时总是去源代码)https://github.com/golang/go/blob/master/src/time/format.go#L92

所以对你来说:

"01-JAN-1970 00:00:00"应该是"01-Jan-2006 03:04:05"

使用给定引用中正确格式的常量值的示例。https://play.golang.org/p/MUNqaFQHjVJ

编辑:

对于使用 format.go 引用的强调,即值(月、小时、秒等),语法“01/Jan/2006”或“01-Jan-2006”或“01--Jan--2006”都是解析时间的有效方法。

Go 允许非常灵活地解析基于字符串的日期

下面是另一个格式示例:https://play.golang.org/p/kEyZEDpu-6N"01/Jan/2006 03:04:05"


查看完整回答
反对 回复 2022-08-09
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信