Implemented the logging viewer

This commit is contained in:
Thorsten Sommer committed 2015-06-22 17:38:55 +02:00
1 parent d925e85653
commit 71aa99a5e3
11 files changed
+250 -120

No files matched your search

+10 -2
View File
@@ -1,9 +1,17 @@
package DeviceDatabase
import (
"github.com/SommerEngineering/Ocean/Admin/Scheme"
)
// Read the message names out of the cache.
func ReadMessageNames() (messageNames []string) {
func ReadMessageNames() (messageNames []Scheme.MessageNames) {
mutexCacheMessageNames.RLock()
defer mutexCacheMessageNames.RUnlock()
messageNames = cacheMessageNames
// Transform the values to the right format:
for _, entry := range cacheMessageNames {
messageNames = append(messageNames, Scheme.MessageNames(entry))
}
return
}
+8 -2
View File
@@ -1,6 +1,7 @@
package DeviceDatabase
import (
"github.com/SommerEngineering/Ocean/Admin/Scheme"
"github.com/SommerEngineering/Ocean/Log"
LM "github.com/SommerEngineering/Ocean/Log/Meta"
"gopkg.in/mgo.v2/bson"
@@ -8,7 +9,7 @@ import (
)
// Read the message names from the database without any cache.
func readMessageNamesFromDB() (result []string) {
func readMessageNamesFromDB() (result []Scheme.MessageNames) {
var nextMessageNames []string
if err := logDBCollection.Find(bson.D{}).Distinct(`MessageName`, &nextMessageNames); err != nil {
// Case: Error, was not able to write the event to the database:
@@ -18,6 +19,11 @@ func readMessageNamesFromDB() (result []string) {
// Sort the sender names:
sort.Strings(nextMessageNames)
result = nextMessageNames
// Transform the values to the right format:
for _, entry := range nextMessageNames {
result = append(result, Scheme.MessageNames(entry))
}
return
}
+10 -2
View File
@@ -1,9 +1,17 @@
package DeviceDatabase
import (
"github.com/SommerEngineering/Ocean/Admin/Scheme"
)
// Read the sender names out of the cache.
func ReadSenderNames() (senderNames []string) {
func ReadSenderNames() (senderNames []Scheme.Sender) {
mutexCacheSenderNames.RLock()
defer mutexCacheSenderNames.RUnlock()
senderNames = cacheSenderNames
// Transform the values to the right format:
for _, entry := range cacheSenderNames {
senderNames = append(senderNames, Scheme.Sender(entry))
}
return
}
+7 -2
View File
@@ -1,6 +1,7 @@
package DeviceDatabase
import (
"github.com/SommerEngineering/Ocean/Admin/Scheme"
"github.com/SommerEngineering/Ocean/Log"
LM "github.com/SommerEngineering/Ocean/Log/Meta"
"gopkg.in/mgo.v2/bson"
@@ -8,7 +9,7 @@ import (
)
// Reads the sender names from the database without any caching.
func readSenderNamesFromDB() (result []string) {
func readSenderNamesFromDB() (result []Scheme.Sender) {
var nextSenderNames []string
if err := logDBCollection.Find(bson.D{}).Distinct(`Sender`, &nextSenderNames); err != nil {
// Case: Was not possible to write to the database.
@@ -18,6 +19,10 @@ func readSenderNamesFromDB() (result []string) {
// Sort the sender names:
sort.Strings(nextSenderNames)
result = nextSenderNames
// Transform the values to the right format:
for _, entry := range nextSenderNames {
result = append(result, Scheme.Sender(entry))
}
return
}
+14 -13
View File
@@ -1,6 +1,7 @@
package DeviceDatabase
import (
"github.com/SommerEngineering/Ocean/Admin/Scheme"
LM "github.com/SommerEngineering/Ocean/Log/Meta"
"gopkg.in/mgo.v2"
"sync"
@@ -8,17 +9,17 @@ import (
var (
// This is the name for logging event from this package:
senderName LM.Sender = `System::Logger::Database`
mutexCacheFull sync.Mutex = sync.Mutex{}
mutexCacheSenderNames sync.RWMutex = sync.RWMutex{}
mutexCacheMessageNames sync.RWMutex = sync.RWMutex{}
cache chan LogDBEntry = nil
cacheSizeNumberOfEvents int = 50
cacheSizeTime2FlushSeconds int = 6
nameCachesRefreshTimeSeconds int = 300
cacheSenderNames []string = nil
cacheMessageNames []string = nil
logDB *mgo.Database = nil
logDBSession *mgo.Session = nil
logDBCollection *mgo.Collection = nil
senderName LM.Sender = `System::Logger::Database`
mutexCacheFull sync.Mutex = sync.Mutex{}
mutexCacheSenderNames sync.RWMutex = sync.RWMutex{}
mutexCacheMessageNames sync.RWMutex = sync.RWMutex{}
cache chan LogDBEntry = nil
cacheSizeNumberOfEvents int = 50
cacheSizeTime2FlushSeconds int = 6
nameCachesRefreshTimeSeconds int = 300
cacheSenderNames []Scheme.Sender = nil
cacheMessageNames []Scheme.MessageNames = nil
logDB *mgo.Database = nil
logDBSession *mgo.Session = nil
logDBCollection *mgo.Collection = nil
)
+9 -3
View File
@@ -26,20 +26,20 @@ func HandlerWebLog(response http.ResponseWriter, request *http.Request) {
countParameters := len(request.Form)
// Setup the data for the HTML template:
data := Scheme.Viewer{}
data := Scheme.LoggingViewer{}
data.Title = `Logging Viewer`
data.Sender = DeviceDatabase.ReadSenderNames()
data.MessageNames = DeviceDatabase.ReadMessageNames()
// To less parameters?
if countParameters < 9 {
// Initial view => refresh & first page (latest logs)
// Initial view => first page (latest logs)
data.Events = readLatest()
data.SetLiveView = true
} else {
// Case: Custom view
currentLevel := request.FormValue(`Level`)
currentTimeRange := request.FormValue(`timeRange`)
currentTimeRange := request.FormValue(`TimeRange`)
currentCategory := request.FormValue(`Category`)
currentImpact := request.FormValue(`Impact`)
currentSeverity := request.FormValue(`Severity`)
@@ -96,6 +96,12 @@ func HandlerWebLog(response http.ResponseWriter, request *http.Request) {
} else {
data.CurrentSender = `*`
}
if currentPage != `` {
data.CurrentPage = currentPage
} else {
data.CurrentPage = `*`
}
}
// Write the MIME type and execute the template: