using System; using System.Threading; using log4net; using log4net.Config; using CncCollector.Config; using CncCollector.Core; using CncCollector.Api; namespace CncCollector { /// /// 主入口:启动采集引擎与管理 API。 /// internal class Program { private static readonly ILog Log = LogManager.GetLogger(typeof(Program)); static void Main(string[] args) { // 初始化日志 XmlConfigurator.Configure(); // 假设默认配置:从配置文件加载,若失败使用硬编码默认值 var defaultConfig = new CncModels.Entity.CollectorConfig { ApiPort = 9000, ApiKey = "", HeartbeatInterval = 60, ConfigPollInterval = 30, DailySummaryTime = TimeSpan.FromHours(1), CollectRetryCount = 3, CollectRetryIntervalSeconds = 5, CollectFailAlertThreshold = 3 }; // 数据库连接字符串,实际部署应改为配置文件读取 string connectionString = "server=127.0.0.1;user=root;password=123456;database=cnc_business;SslMode=none"; // 从 DB 覆盖运行时配置 try { ConfigLoader.LoadRuntimeConfig(connectionString, defaultConfig); } catch (Exception e) { Log.Error("加载运行时配置失败,使用默认配置", e); } var engine = new CollectorEngine(connectionString, defaultConfig); engine.Start(); var api = new CollectorApiServer(engine, defaultConfig.ApiKey, defaultConfig.ApiPort); api.Start(); Console.WriteLine("CNC 收集服务已启动,按任意键退出..."); Console.ReadKey(); api.Stop(); engine.Stop(); } } }