github.com/nxadm/tail@v1.4.12-0.20231010141446-ba755e4d73b6/util/util.go (about) 1 // Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail 2 // Copyright (c) 2015 HPE Software Inc. All rights reserved. 3 // Copyright (c) 2013 ActiveState Software Inc. All rights reserved. 4 5 package util 6 7 import ( 8 "fmt" 9 "log" 10 "os" 11 "runtime/debug" 12 ) 13 14 type Logger struct { 15 *log.Logger 16 } 17 18 var LOGGER = &Logger{log.New(os.Stderr, "", log.LstdFlags)} 19 20 // fatal is like panic except it displays only the current goroutine's stack. 21 func Fatal(format string, v ...interface{}) { 22 // https://github.com/nxadm/log/blob/master/log.go#L45 23 LOGGER.Output(2, fmt.Sprintf("FATAL -- "+format, v...)+"\n"+string(debug.Stack())) 24 os.Exit(1) 25 } 26 27 // partitionString partitions the string into chunks of given size, 28 // with the last chunk of variable size. 29 func PartitionString(s string, chunkSize int) []string { 30 if chunkSize <= 0 { 31 panic("invalid chunkSize") 32 } 33 length := len(s) 34 chunks := 1 + length/chunkSize 35 start := 0 36 end := chunkSize 37 parts := make([]string, 0, chunks) 38 for { 39 if end > length { 40 end = length 41 } 42 parts = append(parts, s[start:end]) 43 if end == length { 44 break 45 } 46 start, end = end, end+chunkSize 47 } 48 return parts 49 }