-
Wolfgang Welz authoredWolfgang Welz authored
ui_log_entry.go 2.23 KiB
package statusscreen
import (
"fmt"
"github.com/gdamore/tcell"
"github.com/iotaledger/hive.go/logger"
"github.com/rivo/tview"
)
type UILogEntry struct {
Primitive *tview.Grid
TimeContainer *tview.TextView
MessageContainer *tview.TextView
LogLevelContainer *tview.TextView
}
func NewUILogEntry(message logMessage) *UILogEntry {
logEntry := &UILogEntry{
Primitive: tview.NewGrid(),
TimeContainer: tview.NewTextView(),
MessageContainer: tview.NewTextView(),
LogLevelContainer: tview.NewTextView(),
}
logEntry.TimeContainer.SetBackgroundColor(tcell.ColorWhite)
logEntry.TimeContainer.SetTextColor(tcell.ColorBlack)
logEntry.TimeContainer.SetDynamicColors(true)
logEntry.MessageContainer.SetBackgroundColor(tcell.ColorWhite)
logEntry.MessageContainer.SetTextColor(tcell.ColorBlack)
logEntry.MessageContainer.SetDynamicColors(true)
logEntry.LogLevelContainer.SetBackgroundColor(tcell.ColorWhite)
logEntry.LogLevelContainer.SetTextColor(tcell.ColorBlack)
logEntry.LogLevelContainer.SetDynamicColors(true)
textColor := "black::d"
switch message.level {
case logger.LevelInfo:
fmt.Fprintf(logEntry.LogLevelContainer, " [black::d][ [blue::d]INFO [black::d]]")
case logger.LevelWarn:
fmt.Fprintf(logEntry.LogLevelContainer, " [black::d][ [yellow::d]WARN [black::d]]")
textColor = "yellow::d"
case logger.LevelError:
fallthrough
case logger.LevelPanic:
fallthrough
case logger.LevelFatal:
fmt.Fprintf(logEntry.LogLevelContainer, " [black::d][ [red::d]FAIL [black::d]]")
textColor = "red::d"
case logger.LevelDebug:
fmt.Fprintf(logEntry.LogLevelContainer, " [black::d][ [black::b]NOTE [black::d]]")
textColor = "black::b"
}
fmt.Fprintf(logEntry.TimeContainer, " [black::b]"+message.time.Format("15:04:05"))
if message.name == "Node" {
fmt.Fprintf(logEntry.MessageContainer, "["+textColor+"]"+message.msg)
} else {
fmt.Fprintf(logEntry.MessageContainer, "["+textColor+"]"+message.name+": "+message.msg)
}
logEntry.Primitive.
SetColumns(11, 0, 11).
SetRows(1).
SetBorders(false).
AddItem(logEntry.TimeContainer, 0, 0, 1, 1, 0, 0, false).
AddItem(logEntry.MessageContainer, 0, 1, 1, 1, 0, 0, false).
AddItem(logEntry.LogLevelContainer, 0, 2, 1, 1, 0, 0, false)
return logEntry
}