57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
package log
|
|
|
|
import (
|
|
"arimelody-web/model"
|
|
repository "arimelody-web/repository/log"
|
|
"fmt"
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
type LogService struct {
|
|
repo repository.LogRepository
|
|
log *log.Logger
|
|
}
|
|
|
|
func NewLogService(repo repository.LogRepository, logger *log.Logger) *LogService {
|
|
return &LogService{
|
|
repo: repo,
|
|
log: logger,
|
|
}
|
|
}
|
|
|
|
const DEFAULT_LOG_PAGE_LENGTH = 25
|
|
|
|
func (s *LogService) Info(logType string, format string, args ...any) {
|
|
logString := fmt.Sprintf(format, args...)
|
|
|
|
s.log.Printf("[%s] [%s] INFO: %s\n", time.Now().Format(time.UnixDate), logType, logString)
|
|
|
|
if err := s.repo.Create(model.LEVEL_INFO, logType, logString); err != nil {
|
|
log.Printf("WARN: Failed to push log to database: %v\n", err)
|
|
}
|
|
}
|
|
|
|
func (s *LogService) Warn(logType string, format string, args ...any) {
|
|
logString := fmt.Sprintf(format, args...)
|
|
|
|
log.Printf("[%s] [%s] WARN: %s\n", time.Now().Format(time.UnixDate), logType, logString)
|
|
|
|
if err := s.repo.Create(model.LEVEL_INFO, logType, logString); err != nil {
|
|
log.Printf("WARN: Failed to push log to database: %v\n", err)
|
|
}
|
|
}
|
|
|
|
func (s *LogService) Fetch(id string) (*model.Log, error) {
|
|
return s.repo.Get(id)
|
|
}
|
|
|
|
func (s *LogService) Search(
|
|
levelFilters []model.LogLevel,
|
|
typeFilters []string,
|
|
content string,
|
|
limit int,
|
|
offset int,
|
|
) ([]*model.Log, error) {
|
|
return s.repo.Search(levelFilters, typeFilters, content, limit, offset)
|
|
}
|