You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang-net/Program.cs

62 lines
1.9 KiB
C#

using System;
using System.Threading;
using log4net;
using log4net.Config;
using CncCollector.Config;
using CncCollector.Core;
using CncCollector.Api;
namespace CncCollector
{
/// <summary>
/// 主入口:启动采集引擎与管理 API。
/// </summary>
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();
}
}
}