登录
首页 >  Golang >  Go问答

使用最低成本分析日志事务

来源:stackoverflow

时间:2024-02-18 08:45:19 329浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《使用最低成本分析日志事务》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我有一些日志格式,其中包含如下条目: log_entry_no1 := "2021-11-03 7:7:51 hal9000 evil_app 心跳 c99 对不起戴夫" 这些“字段”由空格分隔,除了最后一个称为消息的字段,它只是日志数据并且可以包含空格。

我的问题是。有没有更好的方法来处理这些条目,而无需先拆分整个句子,然后使用 go 以更少的开销加入最后一部分(消息)?

type LogData struct {
            d        Date   // yyyy-mm-dd Mandatory
            t        Time   // hh:mm:ss Mandatory
            hostname string // Mandatory
            app_id   string // Mandatory
            etype    string // enum based string Mandatory
            level    string // Optional base on etype
            message  string // Mandatory
        }

        log_fields := strings.Split(log_entry_no1, " ")
        var log_data = LogData{}
        log_data.d = parseTime(log_entry_no1[0])
        log_data.t = parseTime(log_entry_no1[1])
        //...
        if log_fields[4] == "heartbeat" {
            log_data.level = log_fields[5]
            log_data.message = strings.Join(log_fields[6:], " ")
        } else {
            log_data.message = strings.Join(log_fields[5:], " ")
        }

正确答案


使用 strings.splitn。

func SplitN(s, sep string, n int) []string

文档说如果 n 大于零:它最多返回 n 个子字符串;最后一个子字符串将是未分割的余数。

本篇关于《使用最低成本分析日志事务》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>