- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有什么方法可以将输出从 panic 重定向到一个文件,并为每个 panic 设置一个时间戳。
紧急日志文件的当前示例结果:
goroutine 6 [running]:
_/C_/....func·001(0x11691e80, 0x1a, 0x0, 0x0, 0x10d3550, 0x11691ec0, 0x0, 0x0)
C:/.../Logger.go:309 +0x47
path/filepath.Walk(0x11691e80, 0x1a, 0x1161defc, 0x0, 0x0)
c:/...../path.go:392 +0x97
_/C_/...../Logger.Sample(0x1168ac00, 0x59, 0x0, 0x0)
C:/...../Logger.go:322 +0x1c5
main.handleFileActions()
C:/...../main.go:453 +0x2ad
created by main.main
C:/..../main.go:278 +0x6ea
预期结果:
2017-02-27T14:24:22.627Z - goroutine 6 [running]:
_/C_/....func·001(0x11691e80, 0x1a, 0x0, 0x0, 0x10d3550, 0x11691ec0, 0x0, 0x0)
C:/.../Logger.go:309 +0x47
path/filepath.Walk(0x11691e80, 0x1a, 0x1161defc, 0x0, 0x0)
c:/...../path.go:392 +0x97
_/C_/...../Logger.Sample(0x1168ac00, 0x59, 0x0, 0x0)
C:/...../Logger.go:322 +0x1c5
main.handleFileActions()
C:/...../main.go:453 +0x2ad
created by main.main
C:/..../main.go:278 +0x6ea
最佳答案
可以在日志文件中添加时间戳。
因为错误也只是值,所以您可以在 panic 之前做一些事情。
举个简单的例子:
var buf bytes.Buffer
logger := log.New(&buf, "logger: ", log.Ldate|log.Ltime|log.Llongfile)
logger.Print("Error when calling that code")
fmt.Print(&buf)
logger.Panic("Error")
https://play.golang.org/p/g4mweH4Dex
在这里,您不应该在错误发生时立即 panic 。您可以在日志中写入更多信息。例如函数的参数或配置文件的值。
在记录器定义中使用正确的标志 log.Ldate|log.Ltime|log.Llongfile
您还将获得时间戳。
编辑:感谢 reticentroot 对恢复包装器的评论。文章Defer, Panic and Recover描述了一种如何处理 panic 的方法。这里可以使用 defer 恢复。
func main() {
myFunc()
fmt.Print(&buf)
}
func myFunc() {
defer func() {
if r := recover(); r != nil {
logger.Println("Recovered from panic: ", r)
}
}()
myPanic()
}
func myPanic() {
panic("Panicking in myPanic")
}
关于logging - 在 golang 中将 panic 输出重定向到带有时间戳的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42486194/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!