go - 使用日志包附加到当前行
问题描述
我正在编写一个 Go 程序并使用该log
包写入日志文件,以便每个新行都有一个时间戳。有时我只想将文本附加到当前行,而不是使用前置时间戳开始新行。
我认为该log.Print()
方法可以做到这一点,因为文档说它应该以与 fmt.Print() 相同的方式工作。相反,我发现每次调用都会Print()
生成一个带有时间戳的新行。我在包中找不到另一种方法可以满足我的要求。
有没有办法做到这一点?
示例程序:
logFile, err := os.Create("myLog.log")
defer logFile.Close()
logger := log.New(logFile, "", log.LstdFlags)
logger.Println("Starting first round")
for i := 1; i < 4; i++ {
request, err := http.NewRequest("GET", "http://www.someapi.com/pgNum=" + i, nil)
response, err := client.Do(request)
logger.Print(".")
}
logger.Println("Starting second round")
for j := 1; j < 4; j++ {
request, err := http.NewRequest("GET", "http://www.someotherapi.com/pgNum=" + j, nil)
response, err := client.Do(request)
logger.Print(".")
}
logger.Println("Done")
电流输出:
2019/09/18 13:27:49 Starting first round
2019/09/18 13:27:49 .
2019/09/18 13:27:50 .
2019/09/18 13:27:51 .
2019/09/18 13:27:52 Starting second round
2019/09/18 13:27:52 .
2019/09/18 13:27:53 .
2019/09/18 13:27:54 .
2019/09/18 13:27:55 Done
期望的输出:
2019/09/18 13:27:49 Starting first round...
2019/09/18 13:27:52 Starting second round...
2019/09/18 13:27:55 Done
解决方案
这是无法实现的。日志包总是添加行尾字符。请参阅log.go 第 169 行。
日志可以由许多例程编写,因此您无法保证附加到先前记录的行。
推荐阅读
- android - 从设置中反应原生 Android 权限
- php - 如何在 URL 上添加多个“获取”?
- python - Pytest - 使用 VSCode 调试时跳过测试中的断点
- amazon-web-services - 动态生成 kpi 报告以在具有相同用户应用 ux 体验的电子邮件中发送
- python - 如何从文件中读取 json 模式以在 Flask 中进行验证?
- android - 如何保持 Android Camera 的帧速率恒定
- wordpress - Auto redirection in WooCommerce after login based on user meta data
- python - 在给定距离的情况下查找点的坐标
- c# - 为什么添加站点名称时 IIS 网站不起作用
- javascript - 我需要使用 Javascript 来读取 COM 端口