當前位置: 首頁>>代碼示例>>Golang>>正文


Golang Accumulator.Debug方法代碼示例

本文整理匯總了Golang中github.com/influxdata/telegraf.Accumulator.Debug方法的典型用法代碼示例。如果您正苦於以下問題:Golang Accumulator.Debug方法的具體用法?Golang Accumulator.Debug怎麽用?Golang Accumulator.Debug使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在github.com/influxdata/telegraf.Accumulator的用法示例。


在下文中一共展示了Accumulator.Debug方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: accRow

func (p *Postgresql) accRow(meas_name string, row scanner, acc telegraf.Accumulator) error {
	var columnVars []interface{}
	var dbname bytes.Buffer

	// this is where we'll store the column name with its *interface{}
	columnMap := make(map[string]*interface{})

	for _, column := range p.OrderedColumns {
		columnMap[column] = new(interface{})
	}

	// populate the array of interface{} with the pointers in the right order
	for i := 0; i < len(columnMap); i++ {
		columnVars = append(columnVars, columnMap[p.OrderedColumns[i]])
	}

	// deconstruct array of variables and send to Scan
	err := row.Scan(columnVars...)

	if err != nil {
		return err
	}
	if columnMap["datname"] != nil {
		// extract the database name from the column map
		dbnameChars := (*columnMap["datname"]).([]uint8)
		for i := 0; i < len(dbnameChars); i++ {
			dbname.WriteString(string(dbnameChars[i]))
		}
	} else {
		dbname.WriteString("postgres")
	}

	var tagAddress string
	tagAddress, err = p.SanitizedAddress()
	if err != nil {
		return err
	}

	// Process the additional tags

	tags := map[string]string{}
	tags["server"] = tagAddress
	tags["db"] = dbname.String()
	var isATag int
	fields := make(map[string]interface{})
	for col, val := range columnMap {
		if acc.Debug() {
			log.Printf("postgresql_extensible: column: %s = %T: %s\n", col, *val, *val)
		}
		_, ignore := ignoredColumns[col]
		if !ignore && *val != nil {
			isATag = 0
			for tag := range p.AdditionalTags {
				if col == p.AdditionalTags[tag] {
					isATag = 1
					value_type_p := fmt.Sprintf(`%T`, *val)
					if value_type_p == "[]uint8" {
						tags[col] = fmt.Sprintf(`%s`, *val)
					} else if value_type_p == "int64" {
						tags[col] = fmt.Sprintf(`%v`, *val)
					}
				}
			}
			if isATag == 0 {
				fields[col] = *val
			}
		}
	}
	acc.AddFields(meas_name, fields, tags)
	return nil
}
開發者ID:lizaoreo,項目名稱:telegraf,代碼行數:71,代碼來源:postgresql_extensible.go


注:本文中的github.com/influxdata/telegraf.Accumulator.Debug方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。