mirror of
https://github.com/Monibuca/engine.git
synced 2025-10-22 00:00:08 +08:00
feat: add more config format when call Run
This commit is contained in:
40
main.go
40
main.go
@@ -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" {
|
||||||
|
@@ -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)
|
||||||
|
Reference in New Issue
Block a user