// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; using Microsoft.SqlTools.ServiceLayer.Hosting; using Microsoft.SqlTools.ServiceLayer.SqlContext; using Microsoft.SqlTools.ServiceLayer.Utility; using Microsoft.SqlTools.Utility; using System.IO; namespace Microsoft.SqlTools.ServiceLayer { /// /// Main application class for SQL Tools API Service Host executable /// internal class Program { /// /// Main entry point into the SQL Tools API Service Host /// internal static void Main(string[] args) { try { // read command-line arguments ServiceLayerCommandOptions commandOptions = new ServiceLayerCommandOptions(args); if (commandOptions.ShouldExit) { return; } string logFilePath = "sqltools"; if (!string.IsNullOrWhiteSpace(commandOptions.LoggingDirectory)) { logFilePath = Path.Combine(commandOptions.LoggingDirectory, logFilePath); } // turn on Verbose logging during early development // we need to switch to Normal when preparing for public preview Logger.Initialize(logFilePath: logFilePath, minimumLogLevel: LogLevel.Verbose, isEnabled: commandOptions.EnableLogging); Logger.Write(LogLevel.Normal, "Starting SQL Tools Service Host"); // set up the host details and profile paths var hostDetails = new HostDetails(version: new Version(1, 0)); SqlToolsContext sqlToolsContext = new SqlToolsContext(hostDetails); ServiceHost serviceHost = HostLoader.CreateAndStartServiceHost(sqlToolsContext); serviceHost.WaitForExit(); } catch (Exception e) { Logger.Write(LogLevel.Error, string.Format("An unhandled exception occurred: {0}", e)); Environment.Exit(1); } } } }