seekia/internal/logger/logger.go

103 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
}