104 lines
2.8 KiB
Go
104 lines
2.8 KiB
Go
|
|
||
|
// logger provides a logger to log Seekia client events
|
||
|
// These logs are able to be viewed through the GUI
|
||
|
|
||
|
package logger
|
||
|
|
||
|
// Log types:
|
||
|
// -General
|
||
|
// -Network
|
||
|
// -BackgroundJobs
|
||
|
|
||
|
//TODO: Add more log entries for events that should not happen, but may happen very rarely.
|
||
|
// We want to see if these kinds of events are happening more often than they should (almost never)
|
||
|
// There are also many other places where we should add logging
|
||
|
|
||
|
// TODO: Add automatic clearing of old logs, and a button to clear logs
|
||
|
// Also, a way to disable logging
|
||
|
|
||
|
import "seekia/internal/helpers"
|
||
|
import "seekia/internal/myDatastores/myList"
|
||
|
|
||
|
import "time"
|
||
|
import "errors"
|
||
|
|
||
|
var myLogListDatastore_General *myList.MyList
|
||
|
var myLogListDatastore_Network *myList.MyList
|
||
|
var myLogListDatastore_BackgroundJobs *myList.MyList
|
||
|
|
||
|
func getMyLogListDatastore(logsType string)(*myList.MyList, error){
|
||
|
|
||
|
if (logsType == "General"){
|
||
|
return myLogListDatastore_General, nil
|
||
|
}
|
||
|
if (logsType == "Network"){
|
||
|
return myLogListDatastore_Network, nil
|
||
|
}
|
||
|
if (logsType == "BackgroundJobs"){
|
||
|
return myLogListDatastore_BackgroundJobs, nil
|
||
|
}
|
||
|
|
||
|
return nil, errors.New("getMyLogListDatastore called invalid logsType: " + logsType)
|
||
|
}
|
||
|
|
||
|
// This function must be called whenever an app user signs in
|
||
|
func InitializeMyLogDatastores()error{
|
||
|
|
||
|
newMyLogListDatastore_General, err := myList.CreateNewList("GeneralLog")
|
||
|
if (err != nil) { return err }
|
||
|
|
||
|
newMyLogListDatastore_Network, err := myList.CreateNewList("NetworkLog")
|
||
|
if (err != nil) { return err }
|
||
|
|
||
|
newMyLogListDatastore_BackgroundJobs, err := myList.CreateNewList("BackgroundJobsLog")
|
||
|
if (err != nil) { return err }
|
||
|
|
||
|
myLogListDatastore_General = newMyLogListDatastore_General
|
||
|
myLogListDatastore_Network = newMyLogListDatastore_Network
|
||
|
myLogListDatastore_BackgroundJobs = newMyLogListDatastore_BackgroundJobs
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func GetLogList(logsType string)([]string, error){
|
||
|
|
||
|
logListDatastore, err := getMyLogListDatastore(logsType)
|
||
|
if (err != nil) { return nil, err }
|
||
|
|
||
|
logList, err := logListDatastore.GetList()
|
||
|
if (err != nil) { return nil, err }
|
||
|
|
||
|
return logList, nil
|
||
|
}
|
||
|
|
||
|
func AddLogError(logName string, logError error)error{
|
||
|
|
||
|
errorString := "ERROR: " + logError.Error()
|
||
|
|
||
|
err := AddLogEntry(logName, errorString)
|
||
|
if (err != nil) { return err }
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func AddLogEntry(logsType string, logEntry string)error{
|
||
|
|
||
|
currentYear, currentMonth, currentDay := time.Now().Date()
|
||
|
|
||
|
currentYearString := helpers.ConvertIntToString(currentYear)
|
||
|
currentMonthString := helpers.ConvertIntToString(int(currentMonth))
|
||
|
currentDayString := helpers.ConvertIntToString(currentDay)
|
||
|
|
||
|
logEntryWithTime := currentYearString + "-" + currentMonthString + "-" + currentDayString + ": " + logEntry
|
||
|
|
||
|
myLogListDatastore, err := getMyLogListDatastore(logsType)
|
||
|
if (err != nil) { return err }
|
||
|
|
||
|
err = myLogListDatastore.AddListItem(logEntryWithTime)
|
||
|
if (err != nil) { return err }
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
|