Skip to content

Commit 474d13a

Browse files
committed
Extract shared klog init with newline-escaping stderr writer
Move `newlineEscapingStderrWriter` and `klog` initialization into `pkg/util/log` so both `aws-s3-csi-driver` and `aws-s3-csi-mounter` use the same logging setup writing to stderr with escaped newlines.
1 parent 03643fd commit 474d13a

3 files changed

Lines changed: 36 additions & 25 deletions

File tree

cmd/aws-s3-csi-driver/main.go

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ limitations under the License.
1717
package main
1818

1919
import (
20-
"bytes"
2120
"flag"
2221
"fmt"
2322
"os"
@@ -26,6 +25,7 @@ import (
2625

2726
"github.com/awslabs/mountpoint-s3-csi-driver/pkg/driver"
2827
"github.com/awslabs/mountpoint-s3-csi-driver/pkg/driver/version"
28+
utillog "github.com/awslabs/mountpoint-s3-csi-driver/pkg/util/log"
2929
"k8s.io/klog/v2"
3030
)
3131

@@ -42,15 +42,9 @@ func main() {
4242
mpVersion = flag.String("mp-version", os.Getenv("MOUNTPOINT_VERSION"), "mp version to report in service name")
4343
nodeID = flag.String("node-id", os.Getenv(NodeIDEnvVar), "node-id to report in NodeGetInfo RPC")
4444
)
45-
klog.InitFlags(nil)
46-
// Set logging to stderr false otherwise klog won't call our logger set via
47-
// `klog.SetOutput` - which also logs to stderr after escaping newlines.
48-
flag.Set("logtostderr", "false")
49-
flag.Set("alsologtostderr", "false")
45+
utillog.InitKlog()
5046
flag.Parse()
5147

52-
klog.SetOutput(&newlineEscapingStderrWriter{})
53-
5448
if *printVersion {
5549
info, err := version.GetVersionJSON()
5650
if err != nil {
@@ -86,19 +80,3 @@ func main() {
8680
}
8781
}
8882

89-
var (
90-
newline = []byte("\n")
91-
newlineEscape = []byte("")
92-
)
93-
94-
type newlineEscapingStderrWriter struct{}
95-
96-
// Write writes given log entry to `os.Stderr` after escaping newlines.
97-
func (*newlineEscapingStderrWriter) Write(b []byte) (int, error) {
98-
// Since we escape newlines here, `len` of written bytes might be different from `len(b)`,
99-
// `os.Stderr.Write` returns an error when `writtenBytes != len(b)`, so, we should be fine to
100-
// just return `n = len(b)`.
101-
n := len(b)
102-
_, err := os.Stderr.Write(append(bytes.ReplaceAll(b, newline, newlineEscape), newline...))
103-
return n, err
104-
}

cmd/aws-s3-csi-mounter/main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/awslabs/mountpoint-s3-csi-driver/cmd/aws-s3-csi-mounter/csimounter"
2121
"github.com/awslabs/mountpoint-s3-csi-driver/pkg/mountpoint/mountoptions"
2222
"github.com/awslabs/mountpoint-s3-csi-driver/pkg/podmounter/mppod"
23+
utillog "github.com/awslabs/mountpoint-s3-csi-driver/pkg/util/log"
2324
)
2425

2526
var mountSockRecvTimeout = flag.Duration("mount-sock-recv-timeout", 2*time.Minute, "Timeout for receiving mount options from passed Unix socket.")
@@ -32,7 +33,7 @@ var mountErrorPath = mppod.PathInsideMountpointPod(mppod.KnownPathMountError)
3233
const mountpointBin = "mount-s3"
3334

3435
func main() {
35-
klog.InitFlags(nil)
36+
utillog.InitKlog()
3637
flag.Parse()
3738

3839
mountpointBinFullPath := filepath.Join(*mountpointBinDir, mountpointBin)

pkg/util/log/log.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Package log provides shared klog initialization for CSI Driver components.
2+
package log
3+
4+
import (
5+
"bytes"
6+
"flag"
7+
"os"
8+
9+
"k8s.io/klog/v2"
10+
)
11+
12+
var (
13+
newline = []byte("\n")
14+
newlineEscape = []byte("")
15+
)
16+
17+
// newlineEscapingStderrWriter writes log entries to stderr after escaping newlines.
18+
type newlineEscapingStderrWriter struct{}
19+
20+
func (*newlineEscapingStderrWriter) Write(b []byte) (int, error) {
21+
n := len(b)
22+
_, err := os.Stderr.Write(append(bytes.ReplaceAll(b, newline, newlineEscape), newline...))
23+
return n, err
24+
}
25+
26+
// InitKlog initializes klog to write to stderr with newlines escaped.
27+
func InitKlog() {
28+
klog.InitFlags(nil)
29+
flag.Set("logtostderr", "false")
30+
flag.Set("alsologtostderr", "false")
31+
klog.SetOutput(&newlineEscapingStderrWriter{})
32+
}

0 commit comments

Comments
 (0)