コード例 #1
0
        static void Main(string[] args)
        {
            var monitor = new object();

            try
            {
                Listener.Config = Config.ParseConfig(out logStream, out logWriter);
            }
            catch (Exception e)
            {
                Log(new ApiLogMessage($"Failed to de-serialize config, using default config instead. Exception: {e.Message}{Environment.NewLine}{e.StackTrace}", ApiLogLevel.Warning));
                Listener.Config = Config.DefaultConfig;
            }

            if ((args.Length == 1 || args.Length == 2) && args[0].ToLowerInvariant().Trim() == "verify")
            {
                bool showUnused = args.Length == 2 && args[1].ToLowerInvariant().Trim() == "--showunused";
                bool result     = MetadataStore.VerifyMetadata(showUnused, Log);
                if (result)
                {
                    Log(new ApiLogMessage("No errors.", ApiLogLevel.Info));
                }
                return;
            }

            try
            {
                MetadataStore.LoadMetadata(Log);
            }
            catch (Exception e)
            {
                Log(new ApiLogMessage($"Failed to load metadata. Exception: {e.Message}{Environment.NewLine}{e.StackTrace}", ApiLogLevel.Critical));
                return;
            }

            watcher = new FileSystemWatcher(Environment.CurrentDirectory, "MusicCatConfig.json")
            {
                NotifyFilter = NotifyFilters.LastWrite
            };
            watcher.Changed            += OnConfigChange;
            watcher.EnableRaisingEvents = true;

            Listener.AttachLogger(Log);
            Console.CancelKeyPress += (sender, cancelArgs) => Monitor.Pulse(monitor);
            Listener.Start();
            lock (monitor)
            {
                Monitor.Wait(monitor);
            }
            logWriter?.Dispose();
            logStream?.Dispose();
            Listener.Stop();
        }
コード例 #2
0
        protected override void OnStart(string[] args)
        {
            try
            {
                Listener.Config = Config.ParseConfig(out logStream, out logWriter);
            }
            catch
            {
                Listener.Config = Config.DefaultConfig;
            }

            try
            {
                MetadataStore.LoadMetadata();
            }
            catch (Exception e)
            {
                if (logStream != null)
                {
                    logWriter?.WriteLine(
                        $"{Enum.GetName(typeof(ApiLogLevel), ApiLogLevel.Critical)?.ToUpper()}: Failed to load metadata. Exception: {e.Message}{Environment.NewLine}{e.StackTrace}");
                    logWriter?.Flush();
                }
                Environment.Exit(1);
            }

            Listener.AttachLogger(m =>
            {
                if (m.Level >= displayLogLevel)
                {
                    if (logStream != null)
                    {
                        logWriter?.WriteLine($"{Enum.GetName(typeof(ApiLogLevel), m.Level)?.ToUpper()}: {m.Message}");
                        logWriter?.Flush();
                    }
                }
            });

            watcher = new FileSystemWatcher(Environment.CurrentDirectory, "MusicCatConfig.json")
            {
                NotifyFilter = NotifyFilters.LastWrite
            };
            watcher.Changed            += OnConfigChange;
            watcher.EnableRaisingEvents = true;

            Listener.Start();
        }
コード例 #3
0
        static void Main(string[] args)
        {
            var    monitor    = new object();
            string configJson = File.ReadAllText("BidCatConfig.json");

            try
            {
                Listener.Config = JsonConvert.DeserializeObject <Config>(configJson);
                if (!string.IsNullOrWhiteSpace(Listener.Config.LogDir) &&
                    !File.Exists(Path.Combine(Listener.Config.LogDir, "BidCatLog.txt")))
                {
                    logStream = File.Create(Path.Combine(Listener.Config.LogDir, "BidCatLog.txt"));
                    logWriter = new StreamWriter(logStream);
                }
                else if (!string.IsNullOrWhiteSpace(Listener.Config.LogDir))
                {
                    logStream = File.OpenWrite(Path.Combine(Listener.Config.LogDir, "BidCatLog.txt"));
                    logWriter = new StreamWriter(logStream);
                }
            }
            catch (Exception e)
            {
                logger(new ApiLogMessage($"Failed to de-serialize config, using default config instead. Exception: {e.Message}{Environment.NewLine}{e.StackTrace}", ApiLogLevel.Warning));
                Listener.Config = Config.DefaultConfig;
            }

            if (Listener.Config.StorageType == StorageType.Mongo &&
                (Listener.Config.MongoSettings == null || Listener.Config.MongoSettings.Database == null ||
                 Listener.Config.MongoSettings.Host == null || Listener.Config.MongoSettings.Port == null))
            {
                logger(new ApiLogMessage("Invalid configuration: Mongo is selected but one of the required settings is not present!", ApiLogLevel.Critical));
                Environment.Exit(1);
            }

            Listener.AttachLogger(logger);
            Console.CancelKeyPress += (sender, cancelArgs) => Monitor.Pulse(monitor);
            Listener.Start();
            lock (monitor)
            {
                Monitor.Wait(monitor);
            }
            Listener.Stop();
            logWriter.Dispose();
            logStream.Dispose();
        }
コード例 #4
0
        protected override void OnStart(string[] args)
        {
            try
            {
                Listener.Config = Config.ParseConfig(out logStream, out logWriter);
            }
            catch
            {
                Listener.Config = Config.DefaultConfig;
            }

            try
            {
                MetadataStore.LoadMetadata();
            }
            catch (Exception e)
            {
                if (logStream != null)
                {
                    logWriter?.WriteLine(
                        $"{Enum.GetName(typeof(ApiLogLevel), ApiLogLevel.Critical)?.ToUpper()}: Failed to load metadata. Exception: {e.Message}{Environment.NewLine}{e.StackTrace}");
                    logWriter?.Flush();
                }
                Environment.Exit(1);
            }

            Listener.AttachLogger(m =>
            {
                if (m.Level >= displayLogLevel)
                {
                    if (logStream != null)
                    {
                        logWriter?.WriteLine($"{Enum.GetName(typeof(ApiLogLevel), m.Level)?.ToUpper()}: {m.Message}");
                        logWriter?.Flush();
                    }
                }
            });
            Listener.Start();
        }
コード例 #5
0
        protected override void OnStart(string[] args)
        {
            string configJson = File.ReadAllText("BidCatConfig.json");

            try
            {
                Listener.Config = JsonConvert.DeserializeObject <Config>(configJson);
                if (!string.IsNullOrWhiteSpace(Listener.Config.LogDir) &&
                    !File.Exists(Path.Combine(Listener.Config.LogDir, "BidCatLog.txt")))
                {
                    logStream = File.Create(Path.Combine(Listener.Config.LogDir, "BidCatLog.txt"));
                    logWriter = new StreamWriter(logStream);
                }
                else if (!string.IsNullOrWhiteSpace(Listener.Config.LogDir))
                {
                    logStream = File.OpenWrite(Path.Combine(Listener.Config.LogDir, "BidCatLog.txt"));
                    logWriter = new StreamWriter(logStream);
                }
            }
            catch
            {
                Listener.Config = Config.DefaultConfig;
            }

            Listener.AttachLogger(m =>
            {
                if (m.Level >= displayLogLevel)
                {
                    if (logStream != null)
                    {
                        logWriter?.WriteLine($"{Enum.GetName(typeof(ApiLogLevel), m.Level)?.ToUpper()}: {m.Message}");
                        logWriter?.Flush();
                    }
                }
            });
            Listener.Start();
        }