mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
- Replaced all instances of apex/log with a structured logger interface in various services, including Api, Server, Config, and others, to enhance logging consistency and context. - Updated logging calls to utilize the new logger methods, improving error tracking and service monitoring. - Added logger initialization in services and controllers to ensure proper logging setup. - Improved error handling and logging messages for better clarity during service operations. - Removed unused apex/log imports and cleaned up related code for better maintainability.
121 lines
2.6 KiB
Go
121 lines
2.6 KiB
Go
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/crawlab-team/crawlab/core/entity"
|
|
"github.com/crawlab-team/crawlab/core/interfaces"
|
|
"github.com/crawlab-team/crawlab/core/utils"
|
|
"os"
|
|
"path/filepath"
|
|
"sync"
|
|
)
|
|
|
|
type Service struct {
|
|
cfg *entity.NodeInfo
|
|
interfaces.Logger
|
|
}
|
|
|
|
func (svc *Service) Init() (err error) {
|
|
metadataConfigPath := utils.GetMetadataConfigPath()
|
|
|
|
// check config directory path
|
|
configDirPath := filepath.Dir(metadataConfigPath)
|
|
if !utils.Exists(configDirPath) {
|
|
if err := os.MkdirAll(configDirPath, os.FileMode(0766)); err != nil {
|
|
svc.Errorf("create config directory error: %v", err)
|
|
return err
|
|
}
|
|
}
|
|
|
|
if !utils.Exists(metadataConfigPath) {
|
|
// not exists, set to default config, and create a config file for persistence
|
|
svc.cfg = newConfig()
|
|
data, err := json.Marshal(svc.cfg)
|
|
if err != nil {
|
|
svc.Errorf("marshal config error: %v", err)
|
|
return err
|
|
}
|
|
if err := os.WriteFile(metadataConfigPath, data, os.FileMode(0766)); err != nil {
|
|
svc.Errorf("write config file error: %v", err)
|
|
return err
|
|
}
|
|
} else {
|
|
// exists, read and set to config
|
|
data, err := os.ReadFile(metadataConfigPath)
|
|
if err != nil {
|
|
svc.Errorf("read config file error: %v", err)
|
|
return err
|
|
}
|
|
if err := json.Unmarshal(data, svc.cfg); err != nil {
|
|
svc.Errorf("unmarshal config error: %v", err)
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (svc *Service) Reload() (err error) {
|
|
return svc.Init()
|
|
}
|
|
|
|
func (svc *Service) GetBasicNodeInfo() (res interfaces.Entity) {
|
|
res = &entity.NodeInfo{
|
|
Key: svc.GetNodeKey(),
|
|
Name: svc.GetNodeName(),
|
|
IsMaster: svc.IsMaster(),
|
|
AuthKey: svc.GetAuthKey(),
|
|
MaxRunners: svc.GetMaxRunners(),
|
|
}
|
|
return res
|
|
}
|
|
|
|
func (svc *Service) GetNodeKey() (res string) {
|
|
return svc.cfg.Key
|
|
}
|
|
|
|
func (svc *Service) GetNodeName() (res string) {
|
|
return svc.cfg.Name
|
|
}
|
|
|
|
func (svc *Service) IsMaster() (res bool) {
|
|
return svc.cfg.IsMaster
|
|
}
|
|
|
|
func (svc *Service) GetAuthKey() (res string) {
|
|
return svc.cfg.AuthKey
|
|
}
|
|
|
|
func (svc *Service) GetMaxRunners() (res int) {
|
|
return svc.cfg.MaxRunners
|
|
}
|
|
|
|
func newNodeConfigService() (svc2 interfaces.NodeConfigService, err error) {
|
|
// config service
|
|
svc := &Service{
|
|
cfg: newConfig(),
|
|
Logger: utils.NewLogger("NodeConfigService"),
|
|
}
|
|
|
|
// init
|
|
if err := svc.Init(); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return svc, nil
|
|
}
|
|
|
|
var _service interfaces.NodeConfigService
|
|
var _serviceOnce sync.Once
|
|
|
|
func GetNodeConfigService() interfaces.NodeConfigService {
|
|
_serviceOnce.Do(func() {
|
|
var err error
|
|
_service, err = newNodeConfigService()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
})
|
|
return _service
|
|
}
|