123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- using Pomelo;
- using System;
- using System.Configuration;
- using System.Diagnostics;
- using System.Dynamic;
- using System.IO;
- using System.Threading;
- using System.Threading.Tasks;
- using CommonLang.Log;
- using System.Runtime.InteropServices;
- using System.Xml;
- using CommonLang.Xml;
- using System.Xml.Linq;
- using CommonLang.Vector;
- using System.Text;
- using System.Security.Cryptography;
- using CommonAI.Data;
- using CommonLang;
- using CommonAI.Zone.Helper;
- namespace test
- {
- public class Program
- {
- private static bool isRunning = false;
- private static bool isTest = false;
- public static void Main(string[] args)
- {
- try
- {
- DisbleQuickEditMode();
- dynamic intput = new ExpandoObject();
- isRunning = true;
- // -- ZoneConfig
- var zoneConfig = new ZoneConfig();
- zoneConfig.startPath = Environment.CurrentDirectory;
- zoneConfig.assetPath = GetConfigAsString("zoneConfig.assetPath");
- intput.zoneConfig = zoneConfig;
- // -- logConfig
- var logConfig = new LogConfig();
-
- logConfig.serverId = GetConfigAsString("game.server.id");
- logConfig.outputPath = GetConfigAsString("logConfig.outputPath");
- logConfig.level = GetConfigLoglevel("logConfig.level");
- string socketPort = "socket_" + GetConfigAsString("fastStreamConfig.port");
- //log4j默认的配置文件名,其实也不能修改
- string sourceFile = "log4net";// GetConfigAsString("logConfig.configFile");
- logConfig.configFile = sourceFile + ".config";
- //根据服务器id,重载log文件配置
- string logExt = string.IsNullOrEmpty(logConfig.serverId) ? socketPort : logConfig.serverId;
- ReloadLogConfig(sourceFile, logConfig.outputPath + logExt, logConfig.configFile);
- LoggerFactory.SetFactory(new PomeloLog(logConfig));
- if (isTest)
- {
- testLog(logConfig);
- return;
- }
- intput.logConfig = logConfig;
- // -- iceConfig
- var iceConfig = new IceConfig();
- iceConfig.host = GetConfigAsString("iceConfig.host");
- iceConfig.port = GetConfigAsInt("iceConfig.port");
- iceConfig.isTraceNetwork = GetConfigAsBool("iceConfig.isTraceNetwork");
- iceConfig.isTraceProtocol = GetConfigAsBool("iceConfig.isTraceProtocol");
- iceConfig.isWarnConnections = GetConfigAsBool("iceConfig.isWarnConnections");
- intput.iceConfig = iceConfig;
- GlobalData.GAME_BS_TEST = GetConfigAsBool("game.bstest") || (logConfig.serverId.Equals("10004") && iceConfig.port == 9910);
- // -- fastStreamConfig
- var fastStreamConfig = new FastStreamConfig();
- fastStreamConfig.port = GetConfigAsInt("fastStreamConfig.port");
- intput.fastStreamConfig = fastStreamConfig;
- Task.WaitAll(new EdgeJS().init(intput));
- }
- catch (Exception e)
- {
- isRunning = false;
- Console.WriteLine(e);//捕获异常,输出异常信息
- Console.ReadKey();
- return;
- }
- //
- StartCommandConsoleThread();
- // -- 启动gameServer
- var startBatFile = GetConfigAsString("gameServer.start.bat");
- if (!string.IsNullOrEmpty(startBatFile))
- {
- var start = new ProcessStartInfo();
- start.WorkingDirectory = Path.GetDirectoryName(startBatFile);
- start.FileName = startBatFile;
- start.CreateNoWindow = false;
- start.UseShellExecute = false;
- start.RedirectStandardInput = false;
- start.RedirectStandardOutput = false;
- Process pro = null;
- try
- {
- pro = Process.Start(start);
- pro.WaitForExit();
- }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);//捕获异常,输出异常信息
- }
- finally
- {
- pro.Close();
- }
- }
- isRunning = false;
- }
- public static void testLog(LogConfig logConfig)
- {
- Logger defLog = LoggerFactory.GetDefLogger();
- Logger testLog = LoggerFactory.GetLogger("test");
- defLog.Debug("debug def");
- defLog.Info("info def");
- defLog.Warn("warn def");
- defLog.Error("error def");
- defLog.DebugFormat("{0} format","def debug");
- defLog.InfoFormat("{0} format", "def info");
- defLog.WarnFormat("{0} format", "def warn");
- defLog.ErrorFormat("{0} format", "def error");
- testLog.Debug("debug test");
- testLog.Info("info test");
- testLog.Warn("warn test");
- testLog.Error("error test");
- testLog.DebugFormat("{0} format", "test debug");
- testLog.InfoFormat("{0} format", "test info");
- testLog.WarnFormat("{0} format", "test warn");
- testLog.ErrorFormat("{0} format", "test error");
- }
- #region 关闭控制台 快速编辑模式、插入模式
- const int STD_INPUT_HANDLE = -10;
- const uint ENABLE_QUICK_EDIT_MODE = 0x0040;
- const uint ENABLE_INSERT_MODE = 0x0020;
- [DllImport("kernel32.dll", SetLastError = true)]
- internal static extern IntPtr GetStdHandle(int hConsoleHandle);
- [DllImport("kernel32.dll", SetLastError = true)]
- internal static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint mode);
- [DllImport("kernel32.dll", SetLastError = true)]
- internal static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint mode);
- public static void DisbleQuickEditMode()
- {
- IntPtr hStdin = GetStdHandle(STD_INPUT_HANDLE);
- uint mode;
- GetConsoleMode(hStdin, out mode);
- mode &= ~ENABLE_QUICK_EDIT_MODE;//移除快速编辑模式
- mode &= ~ENABLE_INSERT_MODE; //移除插入模式
- SetConsoleMode(hStdin, mode);
- }
- #endregion
- public static void StartCommandConsoleThread()
- {
- new Thread(()=>
- {
- while(isRunning)
- {
- var cmd = Console.ReadLine();
- if(cmd == "cls")
- {
- Console.Clear();
- }
- }
- Thread.Sleep(100);
- }).Start();
- }
- private static void LoglevelConfigErr(string errString)
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("/*********************************************************");
- Console.WriteLine("*logConfig.level配置错误,logConfig.level=" + errString);
- Console.WriteLine("*请检查xmds-battle-server.exe.config文件配置");
- Console.WriteLine("**********************************************************");
- Console.ForegroundColor = ConsoleColor.White;
- }
- //吐血。。。一顿操作猛如虎, 最后还得二次转换,
- //只加几个简单的转换
- private static uint GetConfigLoglevel(string key)
- {
- uint level = LoggerLevel.INFO;
- String logLevel = GetConfigAsString(key);
- if (logLevel == null)
- {
- LoglevelConfigErr(logLevel);
- return LoggerLevel.INFO;
- }
- else
- {
- logLevel = logLevel.ToUpper();
- }
- switch (logLevel)
- {
- case "DEBUG":
- level = LoggerLevel.DEBUG | LoggerLevel.INFO | LoggerLevel.WARNNING | LoggerLevel.ERROR;
- break;
- case "INFO":
- level = LoggerLevel.INFO | LoggerLevel.WARNNING | LoggerLevel.ERROR;
- break;
- case "WARNNING":
- level = LoggerLevel.WARNNING | LoggerLevel.ERROR;
- break;
- case "ERROR":
- level = LoggerLevel.ERROR;
- break;
- default:
- level = LoggerLevel.ERROR;
- LoglevelConfigErr(logLevel);
- break;
- }
- return level;
- }
- private static void ReloadLogConfig(string fileName, string path, string saveFileName)
- {
- try
- {
- XmlDocument xmlDoc = XmlUtil.LoadXML(fileName);
- XmlNode xmlNode = xmlDoc.SelectSingleNode("log4net");
- XmlNodeList nodeList = xmlNode.ChildNodes;
- for (int i = 0; i < nodeList.Count; i++)
- {
- XmlNode nodeTemp = nodeList.Item(i);
- if (nodeTemp == null || !nodeTemp.Name.Equals("appender"))
- {
- continue;
- }
- XmlNode fileAttribute = nodeTemp.SelectSingleNode("file");
- if (fileAttribute != null)
- {
- XmlAttributeCollection attribute = fileAttribute.Attributes;
- if (attribute != null && attribute.Count == 1)
- {
- XmlNode fileNode = attribute.Item(0);
- //perf, debug, info, warn, err
- if (!fileNode.InnerText.EndsWith(".log"))
- {
- fileNode.InnerText = path + "/" + fileNode.InnerText + ".log";
- }
- }
- }
- }
- xmlDoc.Save(saveFileName);
- }
- catch(Exception e)
- {
- throw e;
- }
- }
- public static int GetConfigAsInt(string key)
- {
- var str = ConfigurationManager.AppSettings[key];
- if (string.IsNullOrEmpty(str))
- {
- return 0;
- }
- return int.Parse(str);
- }
- public static string GetConfigAsString(string key)
- {
- return ConfigurationManager.AppSettings[key];
- }
- public static bool GetConfigAsBool(string key)
- {
- var str = ConfigurationManager.AppSettings[key];
- if (string.IsNullOrEmpty(str))
- {
- return false;
- }
- return bool.Parse(str);
- }
- }
- }
|