private static void initProperties() { try { // Loading properties final Map<String, String> properties = DaemonStarter.getLifecycleListener().loadProperties(); if (properties != null) { for (final Entry<String, String> e : properties.entrySet()) { DaemonStarter.addProperty(e.getKey(), String.valueOf(e.getValue())); } } } catch (final Exception e) { DaemonStarter.rlog.error("Getting config data failed", e); DaemonStarter.abortSystem(e); } }
private static void logStartupInfo() { if (DaemonStarter.isDevelopmentMode()) { DaemonStarter.rlog.info("Running in development mode"); } else { DaemonStarter.rlog.info("Running in production mode"); } DaemonStarter.rlog.info("Running with instance id: {}", DaemonStarter.instanceId); DaemonStarter.rlog.info("Running on host: {}", DaemonStarter.hostname); }
DaemonStarter.addProperty(DaemonProperties.DAEMON_NAME, _daemonName); DaemonStarter.addProperty(DaemonProperties.SERVICE_NAME, _daemonName); DaemonStarter.lifecycleListener.set(_lifecycleListener); DaemonStarter.startupMode.set(DaemonStarter.findStartupMode()); DaemonStarter.configureLogging(); DaemonStarter.determineHostname(); DaemonStarter.logStartupInfo(); DaemonStarter.handleSignals(); DaemonStarter.initProperties(); if (DaemonStarter.getDaemonProperties().getProperty(DaemonProperties.DNS_TTL) != null) { DaemonStarter.rlog.info("Setting JVM DNS TTL: " + DaemonStarter.getDaemonProperties().getProperty(DaemonProperties.DNS_TTL)); java.security.Security.setProperty("networkaddress.cache.ttl", DaemonStarter.getDaemonProperties().getProperty(DaemonProperties.DNS_TTL)); DaemonStarter.getLifecycleListener().exception(DaemonStarter.currentPhase.get(), e); DaemonStarter.getLifecycleListener().doStart(); } catch (Exception e) { DaemonStarter.abortSystem(e); DaemonStarter.notifyStarted(); DaemonStarter.getLifecycleListener().doStop();
private static void handleSignals() { if (DaemonStarter.isRunMode()) { try { DaemonStarter.stopService(); }); } catch (IllegalArgumentException e) { DaemonStarter.stopService(); }); } catch (IllegalArgumentException e) { DaemonStarter.getLifecycleListener().signalUSR2(); }); } catch (IllegalArgumentException e) {
@Override public void reconfigureLogging() throws Exception { final Level logLevel = Level.toLevel(DaemonStarter.getDaemonProperties().getProperty(Log4jDaemonProperties.LOGGER_LEVEL), Level.INFO); this.rlog.setLevel(logLevel); this.rlog.info(String.format("Changed the the log level to %s", logLevel)); this.console.activateOptions(); if (!DaemonStarter.isDevelopmentMode()) { final String fileEnabled = DaemonStarter.getDaemonProperties().getProperty(Log4jDaemonProperties.LOGGER_FILE, FALSE_STRING); final String syslogEnabled = DaemonStarter.getDaemonProperties().getProperty(Log4jDaemonProperties.LOGGER_SYSLOG, FALSE_STRING); this.rlog.info("Deactivated the SYSLOG Appender"); } else { final String host = DaemonStarter.getDaemonProperties().getProperty(Log4jDaemonProperties.SYSLOG_HOST, "localhost"); final String facility = DaemonStarter.getDaemonProperties().getProperty(Log4jDaemonProperties.SYSLOG_FACILITY, "LOCAL0"); final Level syslogLevel = Level.toLevel(DaemonStarter.getDaemonProperties().getProperty(Log4jDaemonProperties.SYSLOG_LEVEL), Level.INFO);
private String createJSON(LoggingEvent event) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); Map<String, Object> log = new HashMap<>(); log.put("daemon", DaemonStarter.getDaemonName()); log.put("instance", DaemonStarter.getInstanceId()); log.put("host", DaemonStarter.getHostname()); log.put("phase", DaemonStarter.getCurrentPhase().name()); log.put("timestamp", sdf.format(new Date(event.getTimeStamp()))); log.put("level", event.getLevel().toString()); log.put("source", event.getLoggerName()); log.put("message", event.getRenderedMessage()); log.put("thread", event.getThreadName()); if (event.getThrowableInformation() != null) { Throwable throwable = event.getThrowableInformation().getThrowable(); log.put("throwable", throwable.toString()); log.put("stacktrace", this.getStacktrace(throwable)); } if (event.getProperties() != null) { log.put("mdc", event.getProperties()); } StringBuilder sb = new StringBuilder(); this.addObject(sb, log); sb.append(Layout.LINE_SEP); return sb.toString(); }
private static void notifyStopped() { DaemonStarter.currentPhase.set(LifecyclePhase.STOPPED); DaemonStarter.rlog.info("{} stopped!", DaemonStarter.daemonName); DaemonStarter.getLifecycleListener().stopped(); }
/** * Stop the service and end the program */ public static void stopService() { DaemonStarter.currentPhase.set(LifecyclePhase.STOPPING); final CountDownLatch cdl = new CountDownLatch(1); Executors.newSingleThreadExecutor().execute(() -> { DaemonStarter.getLifecycleListener().stopping(); DaemonStarter.daemon.stop(); cdl.countDown(); }); try { int timeout = DaemonStarter.lifecycleListener.get().getShutdownTimeoutSeconds(); if (!cdl.await(timeout, TimeUnit.SECONDS)) { DaemonStarter.rlog.error("Failed to stop gracefully"); DaemonStarter.abortSystem(); } } catch (InterruptedException e) { DaemonStarter.rlog.error("Failure awaiting stop", e); Thread.currentThread().interrupt(); } }
if (!DaemonStarter.isDevelopmentMode()) { this.darofi = new DailyRollingFileAppender(); this.darofi.setName("DAROFI"); this.darofi.setLayout(new PatternLayout(DEFAULT_PATTERN)); this.darofi.setFile("log/" + DaemonStarter.getDaemonName() + ".log"); this.darofi.setDatePattern("'.'yyyy-MM-dd"); this.darofi.setAppend(true); this.syslog.setLayout(new PatternLayout(DaemonStarter.getDaemonName() + ": %-5p %c %x - %m%n")); this.syslog.setSyslogHost("localhost"); this.syslog.setFacility("LOCAL0");
/** * Abort the daemon */ public static void abortSystem() { DaemonStarter.abortSystem(null); }
configurer.setProperties(DaemonStarter.getDaemonProperties()); ctx.addBeanFactoryPostProcessor(configurer);
@Override protected HTTPResponse getResponse() { HTTPRequest req = WS.url(this.protocol + "://" + this.server + "/api/config/{template}/{svc}"); req.pathParam("template", this.template).pathParam("svc", DaemonStarter.getDaemonName()); req.accept("application/x-javaprops"); if(this.jwt != null) { req.authBearer(this.jwt); } return req.get(); }
DaemonStarter.addProperty(DaemonProperties.DAEMON_NAME, _daemonName); DaemonStarter.addProperty(DaemonProperties.SERVICE_NAME, _daemonName); DaemonStarter.addProperty("com.instana.agent.jvm.name", _daemonName); DaemonStarter.lifecycleListener.set(_lifecycleListener); DaemonStarter.configureLogging(); DaemonStarter.determineHostname(); DaemonStarter.logStartupInfo(); DaemonStarter.handleSignals(); DaemonStarter.initProperties(); if (DaemonStarter.getDaemonProperties().getProperty(DaemonProperties.DNS_TTL) != null) { DaemonStarter.rlog.info("Setting JVM DNS TTL: {}", DaemonStarter.getDaemonProperties().getProperty(DaemonProperties.DNS_TTL)); java.security.Security.setProperty("networkaddress.cache.ttl", DaemonStarter.getDaemonProperties().getProperty(DaemonProperties.DNS_TTL)); DaemonStarter.getLifecycleListener().exception(DaemonStarter.currentPhase.get(), e); DaemonStarter.getLifecycleListener().doStart(); } catch (Exception e) { DaemonStarter.abortSystem(e); DaemonStarter.notifyStarted(); DaemonStarter.getLifecycleListener().doStop(); } catch (Exception e) {
private static void notifyStarted() { DaemonStarter.currentPhase.set(LifecyclePhase.STARTED); DaemonStarter.rlog.info("{} started!", DaemonStarter.daemonName); DaemonStarter.getLifecycleListener().started(); }
/** * Abort the daemon */ public static void abortSystem() { DaemonStarter.abortSystem(null); }
configurer.setProperties(DaemonStarter.getDaemonProperties()); ctx.addBeanFactoryPostProcessor(configurer);
@Override protected HttpResponse getResponse() { HTTPRequest req = WS.url(this.protocol + "://" + this.server + "/api/config/{template}/{svc}"); req.pathParam("template", this.template).pathParam("svc", DaemonStarter.getDaemonName()); req.accept("application/x-javaprops"); if(this.jwt != null) { req.authBearer(this.jwt); } return req.get(); }
private static void initProperties() { try { // Loading properties final Map<String, String> properties = DaemonStarter.getLifecycleListener().loadProperties(); if (properties != null) { for (final Entry<String, String> e : properties.entrySet()) { DaemonStarter.addProperty(e.getKey(), String.valueOf(e.getValue())); } } } catch (final Exception e) { DaemonStarter.rlog.error("Getting config data failed", e); DaemonStarter.abortSystem(e); } }
private static void notifyStopped() { DaemonStarter.currentPhase.set(LifecyclePhase.STOPPED); DaemonStarter.rlog.info(DaemonStarter.daemonName + " stopped!"); DaemonStarter.getLifecycleListener().stopped(); }
private static void determineHostname() { try { final String host = InetAddress.getLocalHost().getHostName(); if ((host != null) && !host.isEmpty()) { DaemonStarter.hostname.set(host); } else { DaemonStarter.rlog.error("Hostname could not be determined --> Exiting"); DaemonStarter.abortSystem(); } } catch (final UnknownHostException e) { DaemonStarter.rlog.error("Getting hostname failed", e); DaemonStarter.abortSystem(e); } }