전송 실패시 fmt 출력

This commit is contained in:
2025-09-10 02:35:49 +09:00
parent e6d8cb6c5a
commit 892392466f

View File

@ -32,7 +32,6 @@ type Client struct {
indexTemplatePattern string indexTemplatePattern string
bulkHeader http.Header bulkHeader http.Header
singleHeader http.Header singleHeader http.Header
sendingCount int32
bulkChan chan *LogDocument bulkChan chan *LogDocument
} }
@ -76,28 +75,40 @@ func (c *Client) SendBulk(ds map[string]*LogDocument) {
} }
type stringSliceReader struct { type stringSliceReader struct {
src [][]byte src [][]byte
sent [][]byte
} }
func (b *stringSliceReader) Read(p []byte) (n int, err error) { func (b *stringSliceReader) Read(p []byte) (n int, err error) {
n = 0
err = nil
for len(b.src) > 0 { for len(b.src) > 0 {
sbt := b.src[0] sbt := b.src[0]
if len(p) < len(sbt) { copied := copy(p, sbt)
b.src[0] = sbt[len(p):] n += copied
sbt = sbt[:len(p)] b.sent = append(b.sent, sbt[:copied])
copy(p, sbt)
return n + len(sbt), nil if copied < len(sbt) {
b.src[0] = sbt[copied:]
return
} }
copy(p, sbt) p = p[copied:]
n += len(sbt)
p = p[len(sbt):]
b.src = b.src[1:] b.src = b.src[1:]
} }
err = io.EOF err = io.EOF
return return
} }
func (b *stringSliceReader) printSent() {
for _, r := range b.sent {
fmt.Print(string(r))
}
fmt.Print("\n")
}
func (c *Client) sendLoop(ctx context.Context) { func (c *Client) sendLoop(ctx context.Context) {
defer func() { defer func() {
r := recover() r := recover()
@ -145,11 +156,9 @@ func (c *Client) sendLoop(ctx context.Context) {
resp, err := c.Do(context.Background(), req, nil) resp, err := c.Do(context.Background(), req, nil)
if err != nil { if err != nil {
if netoperr, ok := err.(*net.OpError); ok && netoperr.Op == "dial" { if netoperr, ok := err.(*net.OpError); ok && netoperr.Op == "dial" {
// 접속 안됨. 파일로 남기고 끝 // 접속 안됨. 재시도 안함
logger.Println("log send bulk failed. no retry :", err) logger.Println("log send bulk failed. no retry :", err)
for _, e := range sending { reader.printSent()
logger.Println(string(e))
}
} else { } else {
// 재시도 // 재시도
logger.Println("log send bulk failed. retry :", err) logger.Println("log send bulk failed. retry :", err)