Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions internal/logging/logging.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package logging

import (
"fmt"
"io"
"log"
"strings"
Expand All @@ -19,20 +20,25 @@ func SetOutput(output io.Writer) {

func Debug(args ...any) {
if debug.Load() {
log.Print(args...)
log.Print(safeLogMessage(fmt.Sprint(args...)))
}
}

func Debugf(format string, args ...any) {
if debug.Load() {
log.Printf(format, args...)
log.Print(safeLogMessage(fmt.Sprintf(format, args...)))
}
}

func Info(args ...any) { log.Print(args...) }
func Infof(format string, args ...any) { log.Printf(format, args...) }
func Warn(args ...any) { log.Print(args...) }
func Warnf(format string, args ...any) { log.Printf(format, args...) }
func Errorf(format string, args ...any) { log.Printf(format, args...) }
func Fatal(args ...any) { log.Fatal(args...) }
func Fatalf(format string, args ...any) { log.Fatalf(format, args...) }
func Info(args ...any) { log.Print(safeLogMessage(fmt.Sprint(args...))) }
func Infof(format string, args ...any) { log.Print(safeLogMessage(fmt.Sprintf(format, args...))) }
func Warn(args ...any) { log.Print(safeLogMessage(fmt.Sprint(args...))) }
func Warnf(format string, args ...any) { log.Print(safeLogMessage(fmt.Sprintf(format, args...))) }
func Errorf(format string, args ...any) { log.Print(safeLogMessage(fmt.Sprintf(format, args...))) }
func Fatal(args ...any) { log.Fatal(safeLogMessage(fmt.Sprint(args...))) }
func Fatalf(format string, args ...any) { log.Fatal(safeLogMessage(fmt.Sprintf(format, args...))) }

func safeLogMessage(message string) string {
message = strings.ReplaceAll(message, "\r", "")
return strings.ReplaceAll(message, "\n", " ")
}
25 changes: 25 additions & 0 deletions internal/logging/logging_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package logging

import (
"bytes"
"log"
"strings"
"testing"
)

func TestInfoProducesSingleRecord(t *testing.T) {
var output bytes.Buffer
originalWriter := log.Writer()
originalFlags := log.Flags()
defer func() {
log.SetOutput(originalWriter)
log.SetFlags(originalFlags)
}()
log.SetOutput(&output)
log.SetFlags(0)

Infof("source=%s", "first\r\nforged\nthird")
if got := strings.TrimSuffix(output.String(), "\n"); got != "source=first forged third" {
t.Fatalf("unexpected log record: %q", got)
}
}