@Override public void injectHtml(HtmlInjector.InjectArguments injectArguments) { final List<String> pathsOfWidgetTabPlugins = new ArrayList<String>(); for (String path : Stagemonitor.getPathsOfWidgetTabPlugins()) { pathsOfWidgetTabPlugins.add(contextPath + path); } final List<String> pathsOfWidgetMetricTabPlugins = new ArrayList<String>(); for (String path : Stagemonitor.getPathsOfWidgetMetricTabPlugins()) { pathsOfWidgetMetricTabPlugins.add(contextPath + path); } final SpanWrapper span = injectArguments.getSpanWrapper(); injectArguments.setContentToInjectBeforeClosingBody(widgetTemplate .replace("@@JSON_REQUEST_TRACE_PLACEHOLDER@@", span != null ? JsonUtils.toJson(span, SpanUtils.CALL_TREE_ASCII) : "null") .replace("@@CONFIGURATION_OPTIONS@@", JsonUtils.toJson(configuration.getConfigurationOptionsByCategory())) .replace("@@CONFIGURATION_PWD_SET@@", Boolean.toString(servletPlugin.getConfigurationPasswordChecker().isPasswordSet())) .replace("@@CONFIGURATION_SOURCES@@", JsonUtils.toJson(configuration.getNamesOfConfigurationSources())) .replace("@@MEASUREMENT_SESSION@@", JsonUtils.toJson(Stagemonitor.getMeasurementSession())) .replace("@@PATHS_OF_TAB_PLUGINS@@", JsonUtils.toJson(pathsOfWidgetTabPlugins)) .replace("@@PATHS_OF_WIDGET_METRIC_TAB_PLUGINS@@", JsonUtils.toJson(pathsOfWidgetMetricTabPlugins)) .replace("@@CONNECTION_ID@@", UUID.randomUUID().toString())); } }
public static void main(String[] args) throws IOException { final String json = JsonUtils.toJson(ConfigurationRegistry.builder() .optionProviders(ServiceLoader.load(StagemonitorPlugin.class, ConfigurationRegistry.class.getClassLoader())) .build() .getConfigurationOptionsByCategory()); System.out.println(json); File stagemonitorWidgetDevHtml = new File("stagemonitor-web-servlet/src/test/resources/stagemonitorWidgetDev.html"); String content = FileUtils.readFileToString(stagemonitorWidgetDevHtml); content = content.replaceAll("configurationOptions .*", "configurationOptions = " + json.replace("$", "\\$").replace("\\\"", "\\\\\"") + ";"); FileUtils.writeStringToFile(stagemonitorWidgetDevHtml, content); } }
public void logConfiguration(ConfigurationRegistry configuration) { logger.info("# stagemonitor configuration, listing non-default values:"); boolean hasOnlyDefaultOptions = true; for (List<ConfigurationOption<?>> options : configuration.getConfigurationOptionsByCategory().values()) { for (ConfigurationOption<?> option : options) { if (!option.isDefault()) { hasOnlyDefaultOptions = false; logger.info("{}: {} (source: {})", option.getKey(), prepareOptionValueForLog(option), option.getNameOfCurrentConfigurationSource()); if (option.getTags().contains("deprecated")) { logger.warn("Detected usage of deprecated configuration option '{}'. " + "This option might be removed in the future. " + "Please refer to the documentation about alternatives.", option.getKey()); } if (!option.getKey().equals(option.getUsedKey())) { logger.warn("Detected usage of an old configuration key: '{}'. Please use '{}' instead.", option.getUsedKey(), option.getKey()); } } } } if (hasOnlyDefaultOptions) { logger.warn("stagemonitor has not been configured. Have a look at " + "https://github.com/stagemonitor/stagemonitor/wiki/How-should-I-configure-stagemonitor%3F " + "and " + "https://github.com/stagemonitor/stagemonitor/wiki/Configuration-Options " + "for further instructions"); } }
private static String getMarkdown(ConfigurationRegistry configurationRegistry) { StringBuilder markdown = new StringBuilder(); final Map<String, List<ConfigurationOption<?>>> configurationOptionsByPlugin = new TreeMap<>(configurationRegistry.getConfigurationOptionsByCategory());
@Test public void testToJsonDoesNotThrowException() throws Exception { final ConfigurationOptionProvider optionProvider = TestConfigurationOptionProvider.of( ConfigurationOption.stringOption().key("foo").description("Foo").configurationCategory("Foos").build()); final ConfigurationRegistry configuration = ConfigurationRegistry.builder().addOptionProvider(optionProvider).build(); new ObjectMapper().writeValueAsString(configuration.getConfigurationOptionsByCategory()); }
void logConfiguration(ConfigurationRegistry configurationRegistry, Logger logger) { final String serviceName = configurationRegistry.getConfig(CoreConfiguration.class).getServiceName(); logger.info("Starting Elastic APM {} as {} on {}", elasticApmVersion, serviceName, getJvmAndOsVersionString()); for (List<ConfigurationOption<?>> options : configurationRegistry.getConfigurationOptionsByCategory().values()) { for (ConfigurationOption<?> option : options) { if (!option.isDefault()) { logConfigWithNonDefaultValue(logger, option); } } } if (configurationRegistry.getConfig(StacktraceConfiguration.class).getApplicationPackages().isEmpty()) { logger.warn("To enable all features and to increase startup times, please configure {}", StacktraceConfiguration.APPLICATION_PACKAGES); } }