1
0
mirror of https://github.com/amir20/dozzle.git synced 2025-12-21 21:33:18 +01:00

fix: fixes std stream when type is unknown. see #2243 (#2247)

* fix: fixes std stream when type is unknown. see #2243

* fixes tests
This commit is contained in:
Amir Raminfar
2023-06-08 10:23:02 -07:00
committed by GitHub
parent 8912339044
commit 7477b1aecc
5 changed files with 24 additions and 16 deletions

View File

@@ -19,7 +19,7 @@ export interface LogEvent {
readonly id: number;
readonly l: string;
readonly p: Position;
readonly s: number;
readonly s: "stdout" | "stderr" | "unknown";
}
export abstract class LogEntry<T extends string | JSONObject> implements HasComponent {
@@ -151,9 +151,15 @@ export function asLogEntry(event: LogEvent): LogEntry<string | JSONObject> {
new Date(event.ts),
event.l,
event.p,
event.s === 1 ? "stdout" : "stderr"
event.s === "unknown" ? "stderr" : event.s ?? "stderr"
);
} else {
return new ComplexLogEntry(event.m, event.id, new Date(event.ts), event.l, event.s === 1 ? "stdout" : "stderr");
return new ComplexLogEntry(
event.m,
event.id,
new Date(event.ts),
event.l,
event.s === "unknown" ? "stderr" : event.s ?? "stderr"
);
}
}

View File

@@ -30,7 +30,8 @@ type dockerClient struct {
type StdType int
const (
STDOUT StdType = 1 << iota
UNKNOWN StdType = 1 << iota
STDOUT
STDERR
)
const STDALL = STDOUT | STDERR
@@ -38,13 +39,13 @@ const STDALL = STDOUT | STDERR
func (s StdType) String() string {
switch s {
case STDOUT:
return "out"
return "stdout"
case STDERR:
return "err"
return "stderr"
case STDALL:
return "all"
default:
return ""
return "unknown"
}
}

View File

@@ -98,15 +98,16 @@ func (g *eventGenerator) consume() {
switch std {
case "OUT":
stdType = STDOUT
message = message[3:]
case "ERR":
stdType = STDERR
message = message[3:]
default:
log.Panicf("unknown std type [%s] with message [%s]", std, message)
log.Debugf("unknown std type [%s] with message [%s]", std, message)
stdType = UNKNOWN
}
message = message[3:]
logEvent := &LogEvent{Id: h.Sum32(), Message: message, StdType: stdType}
logEvent := &LogEvent{Id: h.Sum32(), Message: message, Stream: stdType.String()}
if index := strings.IndexAny(message, " "); index != -1 {
logId := message[:index]

View File

@@ -46,7 +46,7 @@ type LogEvent struct {
Id uint32 `json:"id,omitempty"`
Level string `json:"l,omitempty"`
Position LogPosition `json:"p,omitempty"`
StdType StdType `json:"s,omitempty"`
Stream string `json:"s,omitempty"`
}
func (l *LogEvent) HasLevel() bool {

View File

@@ -76,8 +76,8 @@ HTTP/1.1 200 OK
Connection: close
Content-Type: application/ld+json; charset=UTF-8
{"m":"INFO Testing logs...","ts":1589396137772,"id":1122614848,"l":"info","s":1}
{"m":"INFO Testing logs...","ts":1589396137772,"id":1543246723,"l":"info","s":2}
{"m":"INFO Testing logs...","ts":1589396137772,"id":1122614848,"l":"info","s":"stdout"}
{"m":"INFO Testing logs...","ts":1589396137772,"id":1543246723,"l":"info","s":"stderr"}
/* snapshot: Test_handler_streamEvents_error */
HTTP/1.1 200 OK
@@ -160,7 +160,7 @@ Connection: keep-alive
Content-Type: text/event-stream
X-Accel-Buffering: no
data: {"m":"INFO Testing logs...","ts":0,"id":852638900,"l":"info","s":1}
data: {"m":"INFO Testing logs...","ts":0,"id":852638900,"l":"info","s":"stdout"}
event: container-stopped
data: end of stream
@@ -186,7 +186,7 @@ Connection: keep-alive
Content-Type: text/event-stream
X-Accel-Buffering: no
data: {"m":"INFO Testing logs...","ts":1589396137772,"id":3373215946,"l":"info","s":1}
data: {"m":"INFO Testing logs...","ts":1589396137772,"id":3373215946,"l":"info","s":"stdout"}
id: 1589396137772
event: container-stopped