-
-
Notifications
You must be signed in to change notification settings - Fork 199
Expand file tree
/
Copy pathStartupSummary.java
More file actions
108 lines (95 loc) · 3.43 KB
/
StartupSummary.java
File metadata and controls
108 lines (95 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
* Jooby https://jooby.io
* Apache License Version 2.0 https://jooby.io/LICENSE.txt
* Copyright 2014 Edgar Espina
*/
package io.jooby;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import com.typesafe.config.Config;
/**
* Controls the level of information logged during startup.
*
* @author edgar
* @since 3.0.0
*/
public interface StartupSummary {
/**
* Print application name, process ID, server options, execution mode, environment and
* configuration files, application/tmp directory and log file location.
*/
StartupSummary VERBOSE =
(application, server) -> {
Logger logger = application.getLog();
Environment env = application.getEnvironment();
Config config = application.getConfig();
logger.info("{} started with:", application.getName());
logger.info(" PID: {}", config.getString(AvailableSettings.PID));
logger.info(" {}", server.getOptions());
logger.info(" execution mode: {}", application.getExecutionMode().name().toLowerCase());
logger.info(" environment: {}", env);
logger.info(" app dir: {}", config.getString("user.dir"));
logger.info(" tmp dir: {}", application.getTmpdir());
if (config.hasPath(AvailableSettings.LOG_FILE)) {
logger.info(" log file: {}", config.getString(AvailableSettings.LOG_FILE));
}
};
/** Print a single line with application and environment names. */
StartupSummary DEFAULT =
(application, server) -> {
Logger logger = application.getLog();
Environment env = application.getEnvironment();
List<String> activeNames = env.getActiveNames();
String environment = activeNames.size() == 1 ? activeNames.get(0) : activeNames.toString();
logger.info("{} ({}) started", application.getName(), environment);
};
/** Print nothing. */
StartupSummary NONE = (application, server) -> {};
/** Print application routes and server path. */
StartupSummary ROUTES =
(application, server) -> {
Logger logger = application.getLog();
List<Object> args = new ArrayList<>();
StringBuilder buff = new StringBuilder();
buff.append("routes: \n\n{}\n\nlistening on:\n");
args.add(application.getRouter());
ServerOptions options = server.getOptions();
String host = options.getHost().replace("0.0.0.0", "localhost");
if (!options.isHttpsOnly()) {
args.add(host);
args.add(options.getPort());
args.add(application.getContextPath());
buff.append(" http://{}:{}{}\n");
}
if (options.isSSLEnabled()) {
args.add(host);
args.add(options.getSecurePort());
args.add(application.getContextPath());
buff.append(" https://{}:{}{}\n");
}
logger.info(buff.toString(), args.toArray(new Object[0]));
};
/**
* Creates a summary level from string value.
*
* @param value String value.
* @return Summary level or <code>{@link #DEFAULT}</code>.
*/
static StartupSummary create(String value) {
return switch (value.toLowerCase()) {
case "verbose" -> VERBOSE;
case "none" -> NONE;
case "routes" -> ROUTES;
// fallback
default -> DEFAULT;
};
}
/**
* Log application summary.
*
* @param application Application.
* @param server Server.
*/
void log(Jooby application, Server server);
}