package main import ( "log" "net/http" "os" ) func main() { log.SetFlags(log.LstdFlags | log.Lmicroseconds) state.paths = defaultAppPaths() state.logs = newMemoryLogStore(800) closeLogFile := initLogging(state.logs, state.paths.LogDir) defer closeLogFile() trace, closeTrace := initTrace(state.paths.LogDir, loadTraceConfig()) state.trace = trace defer closeTrace() state.config = loadConfig(state.paths.ConfigFile) state.client = NewDouyuClient(state.config.TimeAPIURL, state.trace) state.loadAccounts() state.loadFont() if err := os.MkdirAll(state.paths.SuccessDir, 0755); err != nil { logEvent("图片", "warn", "成功图片目录创建失败,图片保存功能可能不可用: %v", err) } if serverTime, err := state.client.ServerTime(); err == nil { logEvent("时间", "success", "服务端时间获取成功: %s", serverTime.In(cst).Format("2006-01-02 15:04:05.000")) } else { logEvent("时间", "error", "服务端时间获取失败: %v", err) } mux := http.NewServeMux() state.registerRoutes(mux) logEvent("系统", "success", "服务启动: http://%s | 账号: %d", serverAddr, state.accountCount()) if err := http.ListenAndServe(serverAddr, mux); err != nil { logEvent("系统", "error", "服务退出: %v", err) } }