@@ -42,17 +42,10 @@ func RunAndLogLines(cmd *exec.Cmd, logLabels map[string]string, logger *unilogge
42
42
43
43
logEntry .Debugf ("Executing command '%s' in '%s' dir" , strings .Join (cmd .Args , " " ), cmd .Dir )
44
44
45
- if app .LogProxyHookJSON {
46
- plo := & proxyJSONLogger {make ([]byte , 0 ), stdoutLogEntry }
47
- ple := & proxyJSONLogger {make ([]byte , 0 ), stderrLogEntry }
48
- cmd .Stdout = plo
49
- cmd .Stderr = io .MultiWriter (ple , stdErr )
50
- } else {
51
- plo := & proxyLogger {make ([]byte , 0 ), stdoutLogEntry }
52
- ple := & proxyLogger {make ([]byte , 0 ), stderrLogEntry }
53
- cmd .Stdout = plo
54
- cmd .Stderr = io .MultiWriter (ple , stdErr )
55
- }
45
+ plo := & proxyLogger {make ([]byte , 0 ), app .LogProxyHookJSON , stdoutLogEntry }
46
+ ple := & proxyLogger {make ([]byte , 0 ), app .LogProxyHookJSON , stderrLogEntry }
47
+ cmd .Stdout = plo
48
+ cmd .Stderr = io .MultiWriter (ple , stdErr )
56
49
57
50
err := cmd .Run ()
58
51
if err != nil {
@@ -79,17 +72,25 @@ func RunAndLogLines(cmd *exec.Cmd, logLabels map[string]string, logger *unilogge
79
72
return usage , err
80
73
}
81
74
82
- type proxyJSONLogger struct {
75
+ type proxyLogger struct {
83
76
buf []byte
84
77
78
+ logProxyHookJSON bool
79
+
85
80
logger * unilogger.Logger
86
81
}
87
82
88
- func (pj * proxyJSONLogger ) Write (p []byte ) (n int , err error ) {
89
- pj .buf = append (pj .buf , p ... )
83
+ func (pl * proxyLogger ) Write (p []byte ) (n int , err error ) {
84
+ pl .buf = append (pl .buf , p ... )
85
+
86
+ if ! pl .logProxyHookJSON {
87
+ pl .logger .Log (context .Background (), unilogger .LevelInfo .Level (), strings .TrimSpace (string (pl .buf )))
88
+
89
+ return len (p ), nil
90
+ }
90
91
91
92
var line interface {}
92
- err = json .Unmarshal (pj .buf , & line )
93
+ err = json .Unmarshal (pl .buf , & line )
93
94
if err != nil {
94
95
if err .Error () == "unexpected end of JSON input" {
95
96
return len (p ), nil
@@ -100,35 +101,21 @@ func (pj *proxyJSONLogger) Write(p []byte) (n int, err error) {
100
101
101
102
logMap , ok := line .(map [string ]interface {})
102
103
if ! ok {
103
- pj .logger .Debugf ("json log line not map[string]interface{}: %v" , line )
104
+ pl .logger .Debugf ("json log line not map[string]interface{}: %v" , line )
104
105
// fall back to using the logger
105
- pj .logger .Info (string (p ))
106
+ pl .logger .Info (string (p ))
106
107
107
108
return len (p ), err
108
109
}
109
110
110
- logEntry := pj .logger .With (app .ProxyJsonLogKey , true )
111
+ logEntry := pl .logger .With (app .ProxyJsonLogKey , true )
111
112
112
113
// logEntry.Log(log.FatalLevel, string(logLine))
113
114
logEntry .Log (context .Background (), unilogger .LevelFatal .Level (), "hook result" , slog .Any ("hook" , logMap ))
114
115
115
116
return len (p ), nil
116
117
}
117
118
118
- type proxyLogger struct {
119
- buf []byte
120
-
121
- logger * unilogger.Logger
122
- }
123
-
124
- func (pl * proxyLogger ) Write (p []byte ) (n int , err error ) {
125
- pl .buf = append (pl .buf , p ... )
126
-
127
- pl .logger .Log (context .Background (), unilogger .LevelInfo .Level (), strings .TrimSpace (string (pl .buf )))
128
-
129
- return len (p ), nil
130
- }
131
-
132
119
func Output (cmd * exec.Cmd ) (output []byte , err error ) {
133
120
// TODO context: hook name, hook phase, hook binding
134
121
// TODO observability
0 commit comments