示例#1
0
        private static void LogAndReturnError(HttpContext context, string logMessage, string userMessage, string sourceFilePath, HttpStatusCode statusCode, EventType logEventType)
        {
            string loggerName = !string.IsNullOrEmpty(sourceFilePath)
                ? nameof(LightDMS) + "." + Path.GetFileNameWithoutExtension(sourceFilePath)
                : nameof(LightDMS);

            var logger = new NLogProvider().GetLogger(loggerName);

            logger.Write(logEventType, logMessage);

            if (!logMessage.Contains(DownloadHelper.ResponseBlockedMessage))
            {
                context.Response.Clear();
                try
                {
                    context.Response.ContentType = "application/json;";
                    context.Response.StatusCode  = (int)statusCode;
                }
                catch (HttpException ex) when(ex.Message.StartsWith("Server cannot set content type after HTTP headers have been sent."))
                {
                    logger.Error(ex.ToString());
                }
                context.Response.Write(JsonConvert.SerializeObject(new { error = userMessage }));
            }
        }
        public void LoggerName()
        {
            NLogProvider logProvider = new NLogProvider();
            string       loggerName  = $"Space Dot.{Guid.NewGuid().ToString()}";

            Console.WriteLine(loggerName);
            var logger = logProvider.GetLogger(loggerName);

            Assert.AreEqual(loggerName, logger.Name);
        }
        public void GetLoggerTest_Performance()
        {
            NLogProvider logProvider = new NLogProvider();

            for (int i = 0; i < 100 * 1000; i++)
            {
                var logger = logProvider.GetLogger("abc");
                Assert.IsNotNull(logger);
            }
        }
示例#4
0
        public DownloadHelper()
        {
            var logProvider = new NLogProvider();

            _logger = logProvider.GetLogger(GetType().Name);
            var configuration = new Rhetos.Utilities.Configuration();

            _detectResponseBlockingErrors          = configuration.GetBool("LightDMS.DetectResponseBlockingErrors", true).Value;
            _detectResponseBlockingErrorsTimeoutMs = configuration.GetInt("LightDMS.DetectResponseBlockingErrorsTimeoutMs", 60 * 1000).Value;
        }
示例#5
0
        private static void Build(string[] args, NLogProvider logProvider, string rhetosAppRootPath, out bool pauseOnError)
        {
            var logger = logProvider.GetLogger("DeployPackages");

            var configurationBuilder = new ConfigurationBuilder(logProvider)
                                       .AddOptions(new RhetosBuildEnvironment
            {
                ProjectFolder         = rhetosAppRootPath,
                OutputAssemblyName    = null,
                CacheFolder           = Path.Combine(rhetosAppRootPath, "GeneratedFilesCache"),
                GeneratedAssetsFolder = Path.Combine(rhetosAppRootPath, "bin", "Generated"),
                GeneratedSourceFolder = null,
            })
                                       .AddOptions(new LegacyPathsOptions
            {
                BinFolder       = Path.Combine(rhetosAppRootPath, "bin"),
                PluginsFolder   = Path.Combine(rhetosAppRootPath, "bin", "Plugins"),
                ResourcesFolder = Path.Combine(rhetosAppRootPath, "Resources"),
            })
                                       .AddKeyValue(ConfigurationProvider.GetKey((BuildOptions o) => o.GenerateAppSettings), false)
                                       .AddKeyValue(ConfigurationProvider.GetKey((BuildOptions o) => o.BuildResourcesFolder), true)
                                       .AddWebConfiguration(rhetosAppRootPath)
                                       .AddKeyValue(ConfigurationProvider.GetKey((ConfigurationProviderOptions o) => o.LegacyKeysWarning), true)
                                       .AddKeyValue(ConfigurationProvider.GetKey((LoggingOptions o) => o.DelayedLogTimout), 60.0)
                                       .AddConfigurationManagerConfiguration()
                                       .AddCommandLineArgumentsWithConfigurationPaths(args);

            var configuration = configurationBuilder.Build();

            var deployPackagesOptions = configuration.GetOptions <DeployPackagesOptions>();

            pauseOnError = !deployPackagesOptions.NoPause;
            if (deployPackagesOptions.StartPaused)
            {
                StartPaused();
            }

            if (!deployPackagesOptions.DatabaseOnly)
            {
                LegacyUtilities.Initialize(configuration);
                DeleteObsoleteFiles(rhetosAppRootPath, logProvider, logger);

                var installedPackages = DownloadPackages(deployPackagesOptions.IgnoreDependencies, logProvider, logger);

                var pluginAssemblies = Directory.GetFiles(Path.Combine(rhetosAppRootPath, "bin", "Plugins"), "*.dll", SearchOption.TopDirectoryOnly);
                var build            = new ApplicationBuild(configuration, logProvider, pluginAssemblies, installedPackages);
                build.GenerateApplication();
            }
            else
            {
                logger.Info("Skipped deleting old generated files (DeployDatabaseOnly).");
                logger.Info("Skipped download packages (DeployDatabaseOnly).");
                logger.Info("Skipped code generators (DeployDatabaseOnly).");
            }
        }
示例#6
0
 public static int Main(string[] args)
 {
     try
     {
         return(Run(args));
     }
     finally
     {
         NLogProvider.FlushAndShutdown();
     }
 }
示例#7
0
        private static void DbUpdate(string[] args, NLogProvider logProvider)
        {
            var host          = Host.Find(AppDomain.CurrentDomain.BaseDirectory, logProvider);
            var configuration = host.RhetosRuntime
                                .BuildConfiguration(logProvider, host.ConfigurationFolder, configurationBuilder => configurationBuilder
                                                    .AddKeyValue(ConfigurationProvider.GetKey((ConfigurationProviderOptions o) => o.LegacyKeysWarning), true)
                                                    .AddKeyValue(ConfigurationProvider.GetKey((LoggingOptions o) => o.DelayedLogTimout), 60.0)
                                                    .AddConfigurationManagerConfiguration()
                                                    .AddCommandLineArgumentsWithConfigurationPaths(args));

            var deployment = new ApplicationDeployment(configuration, logProvider);

            deployment.UpdateDatabase();
            deployment.InitializeGeneratedApplication(host.RhetosRuntime);
            deployment.RestartWebServer(host.ConfigurationFolder);
        }
示例#8
0
        private static void ConfigureApplication()
        {
            var stopwatch     = Stopwatch.StartNew();
            var logProvider   = new NLogProvider();
            var rhetosRuntime = new RhetosRuntime(true);
            var configuration = rhetosRuntime.BuildConfiguration(logProvider, AppDomain.CurrentDomain.BaseDirectory, null);

            AutofacServiceHostFactory.Container = rhetosRuntime.BuildContainer(logProvider, configuration, null);

            _logger = logProvider.GetLogger("Global");
            _logger.Trace("Startup");

            _webServices = AutofacServiceHostFactory.Container.Resolve <WebServices>();

            var _performanceLogger = logProvider.GetLogger("Performance." + nameof(Global));

            _performanceLogger.Write(stopwatch, "Application configured.");
        }
示例#9
0
        static void Main(string[] args)
        {
            var logger = new NLogProvider();

            var rabbitMq = ConfigurationManager.AppSettings["RabbitMqConnectionString"];

            using (var bus = new RabbitMqProvider(rabbitMq, logger))
            {
                var webApiAddress = ConfigurationManager.AppSettings["WebApiEndpointAddress"];
                using (var sender = new HttpClientProvider(webApiAddress, logger))
                {
                    var fibonacciService = new FibonacciService(sender, logger);
                    bus.Subscribe <CalculationDTO>("fibonacciQueue", fibonacciService.Handle);

                    Console.WriteLine("Press any key to stop");
                    Console.ReadLine();
                }
            }
        }
示例#10
0
        public static int Main(string[] args)
        {
            var logProvider  = new NLogProvider();
            var logger       = logProvider.GetLogger("DeployPackages");
            var pauseOnError = false;

            logger.Info(() => "Logging configured.");

            try
            {
                if (!DeployPackagesArguments.ValidateArguments(args))
                {
                    return(1);
                }

                string rhetosAppRootPath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ".."));

                Build(args, logProvider, rhetosAppRootPath, out pauseOnError);
                DbUpdate(args, logProvider);

                logger.Info("Done.");
            }
            catch (Exception e)
            {
                logger.Error(e.ToString());

                string typeLoadReport = CsUtility.ReportTypeLoadException(e);
                if (typeLoadReport != null)
                {
                    logger.Error(typeLoadReport);
                }

                if (Environment.UserInteractive)
                {
                    InteractiveExceptionInfo(e, pauseOnError);
                }

                return(1);
            }

            return(0);
        }
示例#11
0
 /// <summary>
 ///     初始化Exceptionless日志提供程序
 /// </summary>
 /// <param name="logName">日志名称</param>
 public ExceptionlessProvider(string logName)
 {
     _logger = NLogProvider.GetLogger(logName);
     _client = ExceptionlessClient.Default;
 }
示例#12
0
        public DownloadHandler()
        {
            var logProvider = new NLogProvider();

            _performanceLogger = logProvider.GetLogger("Performance.LightDMS");
        }
        public void GetLoggerTest_ThreadSafe()
        {
            NLogProvider logProvider = new NLogProvider();

            Parallel.For(1, 20, x => Assert.IsNotNull(logProvider.GetLogger("abc")));
        }
示例#14
0
 private static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
 {
     logger.Fatal((Exception)e.ExceptionObject, "Unhandled exception.");
     NLogProvider.Flush();
 }
示例#15
0
 public Program()
 {
     LogProvider = new NLogProvider();
     Logger      = LogProvider.GetLogger("Rhetos");
 }