From 45f2789048eef72829dc89d17d9e2be29a975216 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Wed, 25 Feb 2015 20:53:50 +0100 Subject: [PATCH] Logging Web Interface **Work in progress** --- Log/DeviceDatabase/Format.go | 23 +++++++++++++++++++++++ Log/DeviceDatabase/Write2Cache.go | 8 ++++---- Log/Meta/Category.go | 19 ++++++++++++++++++- Log/Meta/Format.go | 2 +- Log/Meta/Impact.go | 23 ++++++++++++++++++++++- Log/Meta/Level.go | 23 ++++++++++++++++++++++- Log/Meta/Severity.go | 23 ++++++++++++++++++++++- Log/Web/ReadLatest.go | 7 ++----- Log/Web/Scheme/Constants.go | 10 ++-------- Log/Web/Scheme/Scheme.go | 2 +- 10 files changed, 117 insertions(+), 23 deletions(-) create mode 100644 Log/DeviceDatabase/Format.go diff --git a/Log/DeviceDatabase/Format.go b/Log/DeviceDatabase/Format.go new file mode 100644 index 0000000..979e812 --- /dev/null +++ b/Log/DeviceDatabase/Format.go @@ -0,0 +1,23 @@ +package DeviceDatabase + +import ( + "github.com/SommerEngineering/Ocean/Log/Meta" +) + +func (entry LogDBEntry) Format() (result string) { + + converted := Meta.Entry{} + converted.Time = entry.TimeUTC + converted.Project = entry.Project + converted.Sender = Meta.Sender(entry.Sender) + converted.Category = Meta.ParseCategory(entry.Category) + converted.Level = Meta.ParseLevel(entry.Level) + converted.Severity = Meta.ParseSeverity(entry.Severity) + converted.Impact = Meta.ParseImpact(entry.Impact) + converted.MessageName = Meta.MessageName(entry.MessageName) + converted.MessageDescription = entry.MessageDescription + converted.Parameters = entry.Parameters + + result = converted.Format() + return +} diff --git a/Log/DeviceDatabase/Write2Cache.go b/Log/DeviceDatabase/Write2Cache.go index c461c9b..de02a24 100644 --- a/Log/DeviceDatabase/Write2Cache.go +++ b/Log/DeviceDatabase/Write2Cache.go @@ -11,15 +11,15 @@ func write2Cache(entries []Meta.Entry) { } logDBentry := LogDBEntry{} - logDBentry.Category = Meta.FormatCategory(entry.Category) - logDBentry.Impact = Meta.FormatImpact(entry.Impact) - logDBentry.Level = Meta.FormatLevel(entry.Level) + logDBentry.Category = entry.Category.Format() + logDBentry.Impact = entry.Impact.Format() + logDBentry.Level = entry.Level.Format() logDBentry.MessageDescription = entry.MessageDescription logDBentry.MessageName = string(entry.MessageName) logDBentry.Parameters = entry.Parameters logDBentry.Project = entry.Project logDBentry.Sender = string(entry.Sender) - logDBentry.Severity = Meta.FormatSeverity(entry.Severity) + logDBentry.Severity = entry.Severity.Format() logDBentry.TimeUTC = entry.Time cache <- logDBentry } diff --git a/Log/Meta/Category.go b/Log/Meta/Category.go index 8f6d04b..fb1b770 100644 --- a/Log/Meta/Category.go +++ b/Log/Meta/Category.go @@ -9,7 +9,7 @@ const ( CategoryUSER = Category(iota) ) -func FormatCategory(cat Category) (result string) { +func (cat Category) Format() (result string) { switch cat { case CategoryBUSINESS: result = `C:BUSINESS` @@ -25,3 +25,20 @@ func FormatCategory(cat Category) (result string) { return } + +func ParseCategory(cat string) (value Category) { + switch cat { + case `C:BUSINESS`: + value = CategoryBUSINESS + case `C:APP`: + value = CategoryAPP + case `C:SYSTEM`: + value = CategorySYSTEM + case `C:USER`: + value = CategoryUSER + default: + value = CategoryAPP + } + + return +} diff --git a/Log/Meta/Format.go b/Log/Meta/Format.go index 3bbdda2..acee6ab 100644 --- a/Log/Meta/Format.go +++ b/Log/Meta/Format.go @@ -29,7 +29,7 @@ func (entry Entry) Format() (result string) { messageDescription = strings.Replace(messageDescription, "\t", ` `, -1) messageDescription = strings.Replace(messageDescription, "\r", ` `, -1) - result = fmt.Sprintf(` [■] P:%10s [■] %s [■] %10s [■] %11s [■] %10s [■] %10s [■] sender: %-40s [■] name: %-26s [■] %s [■]`, entry.Project[:lenProject], formatTime(entry.Time), FormatCategory(entry.Category), FormatLevel(entry.Level), FormatSeverity(entry.Severity), FormatImpact(entry.Impact), entry.Sender[:lenSender], entry.MessageName[:lenMessageName], messageDescription) + result = fmt.Sprintf(` [■] P:%10s [■] %s [■] %10s [■] %11s [■] %10s [■] %10s [■] sender: %-40s [■] name: %-26s [■] %s [■]`, entry.Project[:lenProject], formatTime(entry.Time), entry.Category.Format(), entry.Level.Format(), entry.Severity.Format(), entry.Impact.Format(), entry.Sender[:lenSender], entry.MessageName[:lenMessageName], messageDescription) for _, param := range entry.Parameters { diff --git a/Log/Meta/Impact.go b/Log/Meta/Impact.go index 9a22d45..8d382c2 100644 --- a/Log/Meta/Impact.go +++ b/Log/Meta/Impact.go @@ -11,7 +11,7 @@ const ( ImpactUnknown = Impact(iota) ) -func FormatImpact(pri Impact) (result string) { +func (pri Impact) Format() (result string) { switch pri { case ImpactCritical: result = `I:CRITICAL` @@ -31,3 +31,24 @@ func FormatImpact(pri Impact) (result string) { return } + +func ParseImpact(pri string) (value Impact) { + switch pri { + case `I:CRITICAL`: + value = ImpactCritical + case `I:HIGH`: + value = ImpactHigh + case `I:LOW`: + value = ImpactLow + case `I:MIDDLE`: + value = ImpactMiddle + case `I:NONE`: + value = ImpactNone + case `I:UNKNOWN`: + value = ImpactUnknown + default: + value = ImpactUnknown + } + + return +} diff --git a/Log/Meta/Level.go b/Log/Meta/Level.go index 281906c..774d532 100644 --- a/Log/Meta/Level.go +++ b/Log/Meta/Level.go @@ -11,7 +11,7 @@ const ( LevelSECURITY = Level(iota) ) -func FormatLevel(lvl Level) (result string) { +func (lvl Level) Format() (result string) { switch lvl { case LevelDEBUG: result = `L:DEBUG` @@ -31,3 +31,24 @@ func FormatLevel(lvl Level) (result string) { return } + +func ParseLevel(lvl string) (value Level) { + switch lvl { + case `L:DEBUG`: + value = LevelDEBUG + case `L:ERROR`: + value = LevelERROR + case `L:INFO`: + value = LevelINFO + case `L:SECURITY`: + value = LevelSECURITY + case `L:TALKATIVE`: + value = LevelTALKATIVE + case `L:WARN`: + value = LevelWARN + default: + value = LevelERROR + } + + return +} diff --git a/Log/Meta/Severity.go b/Log/Meta/Severity.go index 922ecc6..b07fbb6 100644 --- a/Log/Meta/Severity.go +++ b/Log/Meta/Severity.go @@ -11,7 +11,7 @@ const ( SeverityUnknown = Severity(iota) ) -func FormatSeverity(pri Severity) (result string) { +func (pri Severity) Format() (result string) { switch pri { case SeverityCritical: result = `S:CRITICAL` @@ -31,3 +31,24 @@ func FormatSeverity(pri Severity) (result string) { return } + +func ParseSeverity(pri string) (value Severity) { + switch pri { + case `S:CRITICAL`: + value = SeverityCritical + case `S:HIGH`: + value = SeverityHigh + case `S:LOW`: + value = SeverityLow + case `S:MIDDLE`: + value = SeverityMiddle + case `S:NONE`: + value = SeverityNone + case `S:UNKNOWN`: + value = SeverityUnknown + default: + value = SeverityUnknown + } + + return +} diff --git a/Log/Web/ReadLatest.go b/Log/Web/ReadLatest.go index 562b0ee..ba86442 100644 --- a/Log/Web/ReadLatest.go +++ b/Log/Web/ReadLatest.go @@ -14,7 +14,8 @@ func readLatest() (events []Scheme.LogEvent) { for n := 0; n < count; n++ { eventFromDB := eventsFromDB[n] events[n] = Scheme.LogEvent{} - events[n].LogLine = eventFromDB.Level // TODO!!! + events[n].LogLine = eventFromDB.Format() + events[n].LogLevel = eventFromDB.Level // TODO => Change also the template (Webflow, CSS classes) if n%2 == 0 { events[n].AB = Scheme.B @@ -23,9 +24,5 @@ func readLatest() (events []Scheme.LogEvent) { } } - // data.Events = make([]Scheme.LogEvent, 3) - // data.Events[0].AB = Scheme.A - // data.Events[0].LogLevel = Scheme.LogINFO - // data.Events[0].LogLine = `hello world` return } diff --git a/Log/Web/Scheme/Constants.go b/Log/Web/Scheme/Constants.go index f12d6cb..0461a0b 100644 --- a/Log/Web/Scheme/Constants.go +++ b/Log/Web/Scheme/Constants.go @@ -1,12 +1,6 @@ package Scheme const ( - A string = `loga` - B string = `logb` - LogWARN = `logwarn` - LogDEBUG = `logdebug` - LogERROR = `logerror` - LogINFO = `loginfo` - LogTALKATIVE = `logtalkative` - LogSECURITY = `logsecurity` + A string = `loga` + B string = `logb` ) diff --git a/Log/Web/Scheme/Scheme.go b/Log/Web/Scheme/Scheme.go index cbe6305..8304801 100644 --- a/Log/Web/Scheme/Scheme.go +++ b/Log/Web/Scheme/Scheme.go @@ -15,6 +15,6 @@ type Viewer struct { // type LogEvent struct { LogLine string - LogLevel string // logwarn || logdebug || logerror || loginfo || logtalkative || logsecurity + LogLevel string // L:DEBUG || L:ERROR || L:INFO || L:SECURITY || L:TALKATIVE || L:WARN AB string // loga || logb }