Skip to content

Commit 27932e9

Browse files
Merge pull request #456 from ipeaGIT/r5rcore-logging-rewrite
Silence logback startup messages
2 parents 9a2b3dd + 481652b commit 27932e9

File tree

7 files changed

+48
-88
lines changed

7 files changed

+48
-88
lines changed

java-r5rcore/src/main/resources/logback.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
<configuration>
2+
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
23

34
<!-- Define LOG_PATH using DATA_PATH with fallback to current dir -->
45
<property name="LOG_PATH" value="${LOG_PATH:-./r5r-log.log}" />
56

67
<appender name="RFILE" class="ch.qos.logback.core.FileAppender">
78
<file>${LOG_PATH}</file>
89
<encoder>
9-
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
10+
<pattern>%d{HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
1011
</encoder>
1112
<append>false</append>
1213
</appender>
1314

1415
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
1516
<encoder>
16-
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
17+
<pattern>%d{HH:mm:ss.SSS} %highlight([%-5level]) %logger - %msg%n</pattern>
1718
</encoder>
1819
</appender>
1920

20-
<root level="ALL">
21+
<root level="INFO">
2122
<appender-ref ref="CONSOLE"/>
2223
<appender-ref ref="RFILE"/>
2324
</root>

java-r5rcore/src/org/ipea/r5r/Process/R5Process.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public abstract class R5Process {
6363

6464
protected abstract boolean isOneToOne();
6565

66-
private static final Logger LOG = LoggerFactory.getLogger("org.ipea.r5r.Process.R5RProcess");
66+
private static final Logger LOG = LoggerFactory.getLogger(R5Process.class);
6767

6868
public R5Process(ForkJoinPool threadPool, TransportNetwork transportNetwork, RoutingProperties routingProperties) {
6969
this.r5rThreadPool = threadPool;
@@ -84,7 +84,7 @@ public RDataFrame run() throws ExecutionException, InterruptedException {
8484
filter(Objects::nonNull).
8585
collect(Collectors.toList())).get();
8686

87-
LOG.info(".. DONE!\n");
87+
LOG.info(".. DONE!");
8888

8989
RDataFrame results = mergeResults(processResults);
9090

@@ -199,7 +199,7 @@ private RDataFrame tryRunProcess(AtomicInteger totalProcessed, int index) {
199199
results.clear();
200200
}
201201

202-
LOG.info("\r{} out of {} origins processed.", totalProcessed.getAndIncrement(), nOrigins);
202+
LOG.info("{} out of {} origins processed.", totalProcessed.getAndIncrement(), nOrigins);
203203

204204
} catch (ParseException | FileNotFoundException e) {
205205
e.printStackTrace();
@@ -251,7 +251,7 @@ private RDataFrame mergeResults(List<RDataFrame> processResults) {
251251
);
252252
mergedDataFrame.updateRowCount();
253253

254-
LOG.info(" DONE!\n");
254+
LOG.info(" DONE!");
255255

256256
return mergedDataFrame;
257257
}

java-r5rcore/src/org/ipea/r5r/R5RCore.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@
2929

3030
public class R5RCore {
3131

32-
public static final String R5_VERSION = "7.4";
33-
public static final String R5R_VERSION = "2.2.0";
32+
public static final String R5_VERSION = System.getProperty("R5_VER", "7+, ERROR getting exact version");
33+
34+
public static final String R5R_VERSION = System.getProperty("R5R_VER", "2+, ERROR getting exact version");
3435

3536
private int numberOfThreads;
3637
private ForkJoinPool r5rThreadPool;
@@ -184,11 +185,11 @@ public void setNumberOfThreadsToMax() {
184185
}
185186

186187
public void silentMode() {
187-
Utils.setLogMode("ERROR", false);
188+
Utils.setLogMode("OFF");
188189
}
189190

190191
public void verboseMode() {
191-
Utils.setLogMode("ALL", true);
192+
Utils.setLogMode("INFO");
192193
}
193194

194195
public void setProgress(boolean progress) {

java-r5rcore/src/org/ipea/r5r/Utils/Utils.java

Lines changed: 27 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.conveyal.r5.api.util.LegMode;
77
import com.conveyal.r5.api.util.TransitModes;
88
import com.conveyal.r5.common.GeometryUtils;
9+
import org.ipea.r5r.Process.R5Process;
910
import org.locationtech.jts.geom.Coordinate;
1011
import org.locationtech.jts.geom.LineString;
1112
import org.slf4j.LoggerFactory;
@@ -18,7 +19,7 @@
1819

1920
public class Utils {
2021

21-
static public boolean verbose = true;
22+
static public volatile Level logLevel = Level.INFO;
2223
static public boolean benchmark = false;
2324
static public boolean progress = true;
2425

@@ -27,6 +28,9 @@ public class Utils {
2728
static public boolean saveOutputToCsv = false;
2829
static public String outputCsvFolder = "";
2930

31+
public synchronized static Level getLogLevel() { return logLevel; }
32+
public synchronized static void setLogLevel(Level l) { logLevel = l; }
33+
3034
public static EnumSet<LegMode> setLegModes(String modes) {
3135
EnumSet<LegMode> legModes = EnumSet.noneOf(LegMode.class);
3236

@@ -76,82 +80,32 @@ public static void setlogProgress(boolean progress){
7680
Utils.progress = progress;
7781

7882
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
79-
Logger logger;
80-
logger = loggerContext.getLogger("org.ipea.r5r.Process.R5RProcess");
81-
82-
if (Utils.verbose) {
83-
logger.setLevel(Level.ALL);
84-
} else if (progress) {
85-
logger.setLevel(Level.INFO);
86-
} else {
87-
logger.setLevel(Level.ERROR);
88-
}
89-
}
90-
91-
public static void setLogMode(String mode, boolean verbose) {
92-
Utils.verbose = verbose;
93-
94-
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
95-
96-
Logger logger = loggerContext.getLogger("com.conveyal.r5");
97-
logger.setLevel(Level.valueOf(mode));
98-
99-
logger = loggerContext.getLogger("com.conveyal.osmlib");
100-
logger.setLevel(Level.valueOf(mode));
101-
102-
logger = loggerContext.getLogger("com.conveyal.gtfs");
103-
logger.setLevel(Level.valueOf(mode));
104-
105-
logger = loggerContext.getLogger("com.conveyal.r5.profile.ExecutionTimer");
106-
logger.setLevel(Level.valueOf(mode));
107-
108-
logger = loggerContext.getLogger("graphql.GraphQL");
109-
logger.setLevel(Level.valueOf(mode));
110-
111-
logger = loggerContext.getLogger("org.mongodb.driver.connection");
112-
logger.setLevel(Level.valueOf(mode));
113-
114-
logger = loggerContext.getLogger("org.eclipse.jetty");
115-
logger.setLevel(Level.valueOf(mode));
83+
Logger logger = loggerContext.getLogger(R5Process.class);
11684

117-
logger = loggerContext.getLogger("org.eclipse.jetty");
118-
logger.setLevel(Level.valueOf(mode));
85+
// Choose smallest # Level as that is the most verbose.
11986

120-
logger = loggerContext.getLogger("com.conveyal.r5.profile.FastRaptorWorker");
121-
logger.setLevel(Level.valueOf(mode));
122-
123-
logger = loggerContext.getLogger("org.hsqldb.persist.Logger");
124-
logger.setLevel(Level.valueOf(mode));
125-
126-
logger = loggerContext.getLogger("org.ipea.r5r.R5RCore");
127-
logger.setLevel(Level.valueOf(mode));
128-
129-
logger = loggerContext.getLogger("org.ipea.r5r.Process.PathOptionsTable");
130-
logger.setLevel(Level.valueOf(mode));
131-
132-
logger = loggerContext.getLogger("org.ipea.r5r.R5.R5TravelTimeComputer");
133-
logger.setLevel(Level.valueOf(mode));
134-
135-
logger = loggerContext.getLogger("org.ipea.r5r.Network.TransitLayerWithShapes");
136-
logger.setLevel(Level.valueOf(mode));
137-
138-
logger = loggerContext.getLogger("org.ipea.r5r.Network.NetworkChecker");
139-
logger.setLevel(Level.valueOf(mode));
140-
141-
logger = loggerContext.getLogger("org.ipea.r5r.R5.R5ParetoServer");
142-
logger.setLevel(Level.valueOf(mode));
143-
144-
logger = loggerContext.getLogger("org.ipea.r5r.Planner.TripPlanner");
145-
logger.setLevel(Level.valueOf(mode));
146-
147-
logger = loggerContext.getLogger("org.ipea.r5r.Planner.Trip");
148-
logger.setLevel(Level.valueOf(mode));
87+
Level progressLevel = progress ? Level.INFO : Level.OFF;
88+
Level levelToSet = Utils.getLogLevel().toInt() < progressLevel.toInt() ? Utils.getLogLevel() : progressLevel;
89+
logger.setLevel(levelToSet);
90+
}
14991

150-
logger = loggerContext.getLogger("org.ipea.r5r.Planner.TripLeg");
151-
logger.setLevel(Level.valueOf(mode));
92+
public static void setLogMode(String level) {
93+
Utils.setLogLevel(Level.valueOf(level));
94+
String[] loggerNames = {
95+
"com.conveyal",
96+
"org.ipea.r5r",
97+
"graphql.GraphQL",
98+
"org.mongodb.driver.connection",
99+
"org.eclipse.jetty",
100+
"org.eclipse.jetty",
101+
"org.hsqldb.persist.Logger",
102+
};
152103

153-
logger = loggerContext.getLogger("org.ipea.r5r.Utils.SpeedSetter");
154-
logger.setLevel(Level.valueOf(mode));
104+
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
105+
for (String name : loggerNames) {
106+
Logger logger = loggerContext.getLogger(name);
107+
logger.setLevel(Utils.getLogLevel());
108+
}
155109
}
156110

157111
public static int getLinestringLength(LineString geometry) {

r-package/R/utils.R

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,13 @@ check_transit_availability_on_date <- function(r5r_network,
8787
#'
8888
#' @keywords internal
8989
start_r5r_java <- function(data_path, temp_dir = FALSE, verbose = FALSE) {
90-
log_filename <- paste0("r5rlog_", format(Sys.time(), "%Y%m%d"), ".log")
91-
log_path <- file.path(data_path, log_filename)
92-
rJava::.jinit(parameters = paste0("-DLOG_PATH=", log_path))
90+
log_filename <- "r5r-log.log"
91+
log_path <- paste0("-DLOG_PATH=", file.path(data_path, log_filename))
92+
93+
r5_version <- paste0("-DR5_VER=", r5r_env$r5_jar_version)
94+
r5r_version <- paste0("-DR5R_VER=", utils::packageVersion("r5r"))
95+
96+
rJava::.jinit(parameters = c(log_path, r5_version, r5r_version))
9397

9498
get_java_version <- function(){
9599
ver <- rJava::.jcall("java.lang.System", "S", "getProperty", "java.version")

r-package/inst/jar/r5r.jar

-80 Bytes
Binary file not shown.

r-package/tests/testthat/test-set_verbose.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ test_that("verbose argument works in routing functions", {
4242
verbose_expr <- sub("\\)$", ", verbose = TRUE\\)", expr)
4343
non_verbose_expr <- sub("\\)$", ", verbose = FALSE\\)", expr)
4444

45-
info_regex <- "(\\[.*\\] INFO)|(\\[.*\\] DEBUG)|(\\[.*\\] WARN)"
45+
info_regex <- "\\[\\s*(INFO|ERROR|WARN)\\s*\\]"
4646

4747
log_file <- file.path(r5r_network@jcore$getLogPath())
4848
# Clean log before test

0 commit comments

Comments
 (0)