67 lines
1.1 KiB
Go

package main
import (
"fmt"
"github.com/gin-gonic/gin"
"io"
"log"
"onvif-agent/config"
"onvif-agent/constant"
"onvif-agent/integration/zabbixagent"
"onvif-agent/router"
"os"
"time"
)
func main() {
/**
* Logging
*/
date := time.Now().Format("2006-01-02")
f, err := os.OpenFile(fmt.Sprintf("/var/log/%s/%s.log", constant.AppName, date), os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm)
if err != nil {
log.Fatalf("Error opening file: %v", err)
}
defer func(f *os.File) {
err := f.Close()
if err != nil {
log.Fatalf("Error closing file: %v", err)
}
}(f)
writer := io.MultiWriter(os.Stdout, f)
log.SetOutput(writer)
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
/**
* Load config
*/
if err := config.LoadConfig(); err != nil {
log.Fatalf("Error loading config: %v", err)
}
/**
* Web server
*/
go func() {
r := gin.Default()
router.SetupRoutes(r)
addr := fmt.Sprintf("%s:%d", config.Config.App.Host, config.Config.App.Port)
if err := r.Run(addr); err != nil {
fmt.Println("Failed to start server:", err)
}
}()
/**
* Zabbix agent
*/
go func() {
zabbixagent.Run()
}()
select {}
}