Skip to content

Commit 2296e03

Browse files
committed
centralize printing the exception stacktrace to root logger
1 parent d287102 commit 2296e03

4 files changed

Lines changed: 26 additions & 19 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
drivers/**
22
target-it/**
3-
*logs**/**
3+
*logs*/**

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLogger.java

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@
1616

1717
package com.google.cloud.bigquery.jdbc;
1818

19-
import java.io.PrintWriter;
20-
import java.io.StringWriter;
2119
import java.util.function.Supplier;
2220
import java.util.logging.Level;
21+
import java.util.logging.LogRecord;
2322
import java.util.logging.Logger;
2423

2524
class BigQueryJdbcCustomLogger extends Logger {
@@ -35,6 +34,10 @@ protected BigQueryJdbcCustomLogger(String name, String resourceBundleName) {
3534
}
3635

3736
private void logWithCaller(Level level, Supplier<String> msgSupplier) {
37+
logWithCaller(level, null, msgSupplier);
38+
}
39+
40+
private void logWithCaller(Level level, Throwable thrown, Supplier<String> msgSupplier) {
3841
if (!isLoggable(level)) {
3942
return;
4043
}
@@ -52,13 +55,15 @@ private void logWithCaller(Level level, Supplier<String> msgSupplier) {
5255
}
5356
}
5457

55-
logp(level, sourceClass, sourceMethod, msgSupplier);
56-
}
57-
58-
private String formatStackTrace(Throwable thrown) {
59-
StringWriter sw = new StringWriter();
60-
thrown.printStackTrace(new PrintWriter(sw));
61-
return sw.toString();
58+
if (thrown == null) {
59+
logp(level, sourceClass, sourceMethod, msgSupplier);
60+
} else {
61+
LogRecord record = new LogRecord(level, msgSupplier.get());
62+
record.setSourceClassName(sourceClass);
63+
record.setSourceMethodName(sourceMethod);
64+
record.setThrown(thrown);
65+
log(record);
66+
}
6267
}
6368

6469
void finest(String format, Object... args) {
@@ -86,26 +91,22 @@ void warning(String format, Object... args) {
8691
}
8792

8893
void warning(Throwable thrown, String msg) {
89-
logWithCaller(Level.WARNING, () -> msg + System.lineSeparator() + formatStackTrace(thrown));
94+
logWithCaller(Level.WARNING, thrown, () -> msg);
9095
}
9196

9297
void warning(Throwable thrown, String format, Object... args) {
93-
logWithCaller(
94-
Level.WARNING,
95-
() -> String.format(format, args) + System.lineSeparator() + formatStackTrace(thrown));
98+
logWithCaller(Level.WARNING, thrown, () -> String.format(format, args));
9699
}
97100

98101
void severe(String format, Object... args) {
99102
logWithCaller(Level.SEVERE, () -> String.format(format, args));
100103
}
101104

102105
void severe(Throwable thrown, String msg) {
103-
logWithCaller(Level.SEVERE, () -> msg + System.lineSeparator() + formatStackTrace(thrown));
106+
logWithCaller(Level.SEVERE, thrown, () -> msg);
104107
}
105108

106109
void severe(Throwable thrown, String format, Object... args) {
107-
logWithCaller(
108-
Level.SEVERE,
109-
() -> String.format(format, args) + System.lineSeparator() + formatStackTrace(thrown));
110+
logWithCaller(Level.SEVERE, thrown, () -> String.format(format, args));
110111
}
111112
}

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcRootLogger.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,12 @@ public String format(LogRecord record) {
124124
.append(record.getMessage())
125125
.append(System.lineSeparator());
126126

127+
if (record.getThrown() != null) {
128+
java.io.StringWriter sw = new java.io.StringWriter();
129+
record.getThrown().printStackTrace(new java.io.PrintWriter(sw));
130+
sb.append(sw.toString()).append(System.lineSeparator());
131+
}
132+
127133
return sb.toString();
128134
}
129135
};

java-bigquery/google-cloud-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLoggerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,6 @@ public void testLogWithException() {
9191
assertEquals("testLogWithException", record.getSourceMethodName());
9292
assertEquals(BigQueryJdbcCustomLoggerTest.class.getName(), record.getSourceClassName());
9393
assertTrue(record.getMessage().contains("Error occurred: detail"));
94-
assertTrue(record.getMessage().contains("java.lang.Exception: Test exception"));
94+
assertEquals(ex, record.getThrown());
9595
}
9696
}

0 commit comments

Comments
 (0)