feat: add more config format when call Run

This commit is contained in:
langhuihui
2023-08-18 18:13:40 +08:00
parent 81f518c086
commit 3fac2cd570
2 changed files with 33 additions and 20 deletions

40
main.go
View File

@@ -57,38 +57,48 @@ func init() {
} }
// Run 启动Monibuca引擎传入总的Context可用于关闭所有 // Run 启动Monibuca引擎传入总的Context可用于关闭所有
func Run(ctx context.Context, configFile string) (err error) { func Run(ctx context.Context, conf any) (err error) {
id, _ := machineid.ProtectedID("monibuca") id, _ := machineid.ProtectedID("monibuca")
SysInfo.StartTime = time.Now() SysInfo.StartTime = time.Now()
SysInfo.Version = Engine.Version SysInfo.Version = Engine.Version
Engine.Context = ctx Engine.Context = ctx
if _, err = os.Stat(configFile); err != nil { var cg config.Config
configFile = filepath.Join(ExecDir, configFile) switch v := conf.(type) {
case string:
if _, err = os.Stat(v); err != nil {
v = filepath.Join(ExecDir, v)
}
if ConfigRaw, err = os.ReadFile(v); err != nil {
log.Warn("read config file error:", err.Error())
}
case []byte:
ConfigRaw = v
case config.Config:
cg = v
} }
if err = util.CreateShutdownScript(); err != nil { if err = util.CreateShutdownScript(); err != nil {
log.Error("create shutdown script error:", err) log.Error("create shutdown script error:", err)
} }
if ConfigRaw, err = os.ReadFile(configFile); err != nil {
log.Warn("read config file error:", err.Error())
}
if err = os.MkdirAll(SettingDir, 0766); err != nil { if err = os.MkdirAll(SettingDir, 0766); err != nil {
log.Error("create dir .m7s error:", err) log.Error("create dir .m7s error:", err)
return return
} }
log.Info("Ⓜ starting engine:", Blink(Engine.Version)) log.Info("Ⓜ starting engine:", Blink(Engine.Version))
var cg config.Config
if ConfigRaw != nil { if ConfigRaw != nil {
if err = yaml.Unmarshal(ConfigRaw, &cg); err == nil { if err = yaml.Unmarshal(ConfigRaw, &cg); err != nil {
Engine.RawConfig = cg.GetChild("global")
if b, err := yaml.Marshal(Engine.RawConfig); err == nil {
Engine.Yaml = string(b)
}
//将配置信息同步到结构体
Engine.RawConfig.Unmarshal(&EngineConfig.Engine)
} else {
log.Error("parsing yml error:", err) log.Error("parsing yml error:", err)
} }
} }
if cg != nil {
Engine.RawConfig = cg.GetChild("global")
if b, err := yaml.Marshal(Engine.RawConfig); err == nil {
Engine.Yaml = string(b)
}
//将配置信息同步到结构体
Engine.RawConfig.Unmarshal(&EngineConfig.Engine)
}
var logger log.Logger var logger log.Logger
log.LocaleLogger = logger.Lang(lang.Get(EngineConfig.LogLang)) log.LocaleLogger = logger.Lang(lang.Get(EngineConfig.LogLang))
if EngineConfig.LogLevel == "trace" { if EngineConfig.LogLevel == "trace" {

View File

@@ -9,7 +9,6 @@ import (
"runtime" "runtime"
"strings" "strings"
"syscall" "syscall"
"time"
) )
var Null = struct{}{} var Null = struct{}{}
@@ -19,12 +18,16 @@ func Clone[T any](x T) *T {
} }
func initFatalLog() *os.File { func initFatalLog() *os.File {
fatal_log := "./fatal" fatal_log_dir := "./fatal"
if _fatal_log := os.Getenv("M7S_FATAL_LOG"); _fatal_log != "" { if _fatal_log := os.Getenv("M7S_FATAL_LOG"); _fatal_log != "" {
fatal_log = _fatal_log fatal_log_dir = _fatal_log
}
os.MkdirAll(fatal_log_dir, 0766)
fatal_log := filepath.Join(fatal_log_dir, "latest.log")
info, err := os.Stat(fatal_log)
if err == nil && info.Size() != 0 {
os.Rename(fatal_log, filepath.Join(fatal_log_dir, info.ModTime().Format("2006-01-02 15:04:05")+".log"))
} }
os.MkdirAll(fatal_log, 0766)
fatal_log = filepath.Join(fatal_log, time.Now().Format("2006-01-02 15:04:05")+".log")
logFile, err := os.OpenFile(fatal_log, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666) logFile, err := os.OpenFile(fatal_log, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666)
if err != nil { if err != nil {
log.Println("服务启动出错", "打开异常日志文件失败", err) log.Println("服务启动出错", "打开异常日志文件失败", err)