Skip to content

Commit 05cdbfa

Browse files
committed
feat: add hikari logs to otel
1 parent cc77955 commit 05cdbfa

File tree

4 files changed

+27
-2
lines changed

4 files changed

+27
-2
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
## [Unreleased]
99

10+
## [9.0.5]
11+
12+
- Sends hikari logs to opentelemetry
13+
1014
## [9.0.4]
1115

1216
- Adds back `implementationDependencies.json` file, but now it is generated by the build process

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ plugins {
22
id 'java-library'
33
}
44

5-
version = "9.0.4"
5+
version = "9.0.5"
66

77
repositories {
88
mavenCentral()

src/main/java/io/supertokens/storage/postgresql/HikariLoggingAppender.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@
2525
import ch.qos.logback.core.filter.Filter;
2626
import ch.qos.logback.core.spi.FilterReply;
2727
import ch.qos.logback.core.status.Status;
28+
import io.supertokens.pluginInterface.multitenancy.TenantIdentifier;
29+
import io.supertokens.pluginInterface.opentelemetry.OtelProvider;
2830
import io.supertokens.storage.postgresql.output.Logging;
2931

3032
import java.util.List;
33+
import java.util.Map;
3134

3235
public class HikariLoggingAppender implements Appender<ILoggingEvent> {
3336

@@ -37,6 +40,8 @@ public class HikariLoggingAppender implements Appender<ILoggingEvent> {
3740

3841
private Context context;
3942

43+
private OtelProvider otelProvider;
44+
4045
HikariLoggingAppender(Start start) {
4146
super();
4247
this.start = start;
@@ -126,6 +131,10 @@ public String getName() {
126131
public void setName(String name) {
127132
}
128133

134+
public void setOtelProvider(OtelProvider otelProvider) {
135+
this.otelProvider = otelProvider;
136+
}
137+
129138
@Override
130139
public void doAppend(ILoggingEvent event) throws LogbackException {
131140
if (event.getLevel() == Level.ERROR) {
@@ -135,7 +144,17 @@ public void doAppend(ILoggingEvent event) throws LogbackException {
135144
} else {
136145
Logging.debug(start, event.getFormattedMessage());
137146
}
147+
appendToOtel(event);
148+
}
138149

150+
private void appendToOtel(ILoggingEvent event) {
151+
if (otelProvider != null) {
152+
String logMessage = event.getFormattedMessage();
153+
String logLevel = event.getLevel().toString();
154+
otelProvider.createLogEvent(TenantIdentifier.BASE_TENANT, logMessage, logLevel,
155+
Map.of("loggerName", event.getLoggerName(),
156+
"threadName", event.getThreadName()));
157+
}
139158
}
140159

141160
}

src/main/java/io/supertokens/storage/postgresql/Start.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
import io.supertokens.pluginInterface.oauth.OAuthStorage;
6969
import io.supertokens.pluginInterface.oauth.exception.DuplicateOAuthLogoutChallengeException;
7070
import io.supertokens.pluginInterface.oauth.exception.OAuthClientNotFoundException;
71+
import io.supertokens.pluginInterface.opentelemetry.OtelProvider;
7172
import io.supertokens.pluginInterface.passwordless.PasswordlessCode;
7273
import io.supertokens.pluginInterface.passwordless.PasswordlessDevice;
7374
import io.supertokens.pluginInterface.passwordless.PasswordlessImportUser;
@@ -218,7 +219,7 @@ public void assertThatConfigFromSameUserPoolIsNotConflicting(JsonObject otherCon
218219
}
219220

220221
@Override
221-
public void initFileLogging(String infoLogPath, String errorLogPath) {
222+
public void initFileLogging(String infoLogPath, String errorLogPath, OtelProvider otelProvider) {
222223
if (Logging.isAlreadyInitialised(this)) {
223224
return;
224225
}
@@ -240,6 +241,7 @@ public void initFileLogging(String infoLogPath, String errorLogPath) {
240241
*/
241242
final Logger infoLog = (Logger) LoggerFactory.getLogger("com.zaxxer.hikari");
242243
appender = new HikariLoggingAppender(this);
244+
appender.setOtelProvider(otelProvider);
243245
if (infoLog.getAppender(HikariLoggingAppender.NAME) == null) {
244246
infoLog.setAdditive(false);
245247
infoLog.addAppender(appender);

0 commit comments

Comments
 (0)