diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLogger.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLogger.java index e1edd575b322..c4bc39f7ee2a 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLogger.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLogger.java @@ -116,6 +116,7 @@ private static boolean isLoggerClass(String className) { return className.equals("com.google.cloud.bigquery.jdbc.BigQueryJdbcCustomLogger") || className.equals("com.google.cloud.bigquery.jdbc.BigQueryJdbcResultSetLogger") || className.startsWith("com.google.cloud.bigquery.jdbc.BigQueryJdbcRootLogger") + || className.equals("com.google.cloud.bigquery.jdbc.PerConnectionFileHandler") || className.equals(BigQueryJdbcLogRecord.class.getName()); } } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLoggerTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLoggerTest.java index 223007e7b6fb..e2e90910edb0 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLoggerTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLoggerTest.java @@ -27,6 +27,7 @@ import com.google.cloud.bigquery.FieldValue.Attribute; import com.google.cloud.bigquery.FieldValueList; import com.google.cloud.bigquery.LegacySQLTypeName; +import java.nio.file.Path; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -41,6 +42,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; public class BigQueryJdbcCustomLoggerTest extends BigQueryJdbcLoggingBaseTest { @@ -118,6 +120,28 @@ public void testLazyCallerInference() { assertEquals("testLazyCallerInference", methodName); } + @Test + public void testCallerInferenceWithPerConnectionFileHandler(@TempDir Path tempDir) { + PerConnectionFileHandler perConnHandler = + new PerConnectionFileHandler(tempDir.toString(), Level.ALL); + try { + logger.fine("Message through PerConnectionFileHandler"); + + List records = testHandler.getRecords(); + assertEquals(1, records.size()); + LogRecord record = records.get(0); + + // Publish record via PerConnectionFileHandler to put PerConnectionFileHandler on stack trace + perConnHandler.publish(record); + + // Verify that caller inference skips PerConnectionFileHandler frame + assertEquals(BigQueryJdbcCustomLoggerTest.class.getName(), record.getSourceClassName()); + assertEquals("testCallerInferenceWithPerConnectionFileHandler", record.getSourceMethodName()); + } finally { + perConnHandler.close(); + } + } + @Test public void testHotPathLoggerLogToDefaultWhenContextIsNull() { BigQueryJdbcCustomLogger hotpathLogger =