英文:
get struct string in log file
问题
我有一个脚本打印相同的日志,如下所示:
type Country struct {
cityName string
}
var c Country
然后我执行了以下代码:
var logger = logrus.New()
logger.Debug(c)
但是在日志文件中,它看起来像这样:
country_name:\"\7\6\6\5\3\5\"
我想知道 \\347\\276\\216\\345\\233\\275\
代表什么意思,以及如何在我的脚本中读取真实的值。
英文:
I have a script to print the same log like:
type Country stuct{
cityName string
}
var c Country
and I
var logger = logrus.New()
logger.Debug(c)
but in the log file, it looks like:
country_name:\"\7\6\6\5\3\5\"
I want to know what \\347\\276\\216\\345\\233\\275\
means and how to read the true meanwhile my script read the log file.
答案1
得分: 3
默认的logrus formatter 使用ASCII编码写入JSON。您需要实现自己的格式化程序并使用UTF-8编码。请参阅Logger.SetFormatter。
当我查看源代码时,我没有看到可以设置更改编码的设置。
英文:
The default logrus formatter writes JSON with ASCII encoding. You need to implement your own formatter and use UTF-8. See Logger.SetFormatter.
As I looked into the source code I didn't see any setting that can be set to change the encoding.
答案2
得分: 0
func convertOctonaryUtf8(in string) string {
s := []byte(in)
reg := regexp.MustCompile(\\[0-7]{3}
)
out := reg.ReplaceAllFunc(s,
func(b []byte) []byte {
i, _ := strconv.ParseInt(string(b[1:]), 8, 0)
return []byte{byte(i)}
})
return string(out)
}
这个函数的作用是将字符串中的八进制转换为UTF-8字符。
英文:
func convertOctonaryUtf8(in string) string {
s := []byte(in)
reg := regexp.MustCompile(`\\[0-7]{3}`)
out := reg.ReplaceAllFunc(s,
func(b []byte) []byte {
i, _ := strconv.ParseInt(string(b[1:]), 8, 0)
return []byte{byte(i)}
})
return string(out)
}
the func get the "\347\276\216\345\233\275" mean
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论