Skip to content

Commit dedabdd

Browse files
committed
Add Slf4JLogMessageHandler
1 parent c3596f9 commit dedabdd

File tree

5 files changed

+60
-25
lines changed

5 files changed

+60
-25
lines changed

example/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<dependency>
2727
<groupId>it.tdlight</groupId>
2828
<artifactId>tdlight-java-bom</artifactId>
29-
<version>3.1.2+td.1.8.16</version>
29+
<version>3.1.3+td.1.8.16</version>
3030
<type>pom</type>
3131
<scope>import</scope>
3232
</dependency>

example/src/main/java/it/tdlight/example/Example.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package it.tdlight.example;
22

3+
import it.tdlight.Log;
34
import it.tdlight.client.*;
45
import it.tdlight.client.AuthenticationSupplier;
56
import it.tdlight.client.CommandHandler;
67
import it.tdlight.client.SimpleTelegramClient;
78
import it.tdlight.client.TDLibSettings;
89
import it.tdlight.Init;
10+
import it.tdlight.Slf4JLogMessageHandler;
911
import it.tdlight.jni.TdApi.AuthorizationState;
1012
import it.tdlight.jni.TdApi.Chat;
1113
import it.tdlight.jni.TdApi.FormattedText;
@@ -14,7 +16,6 @@
1416
import it.tdlight.jni.TdApi;
1517
import it.tdlight.jni.TdApi.SendMessage;
1618
import it.tdlight.jni.TdApi.TextEntity;
17-
import it.tdlight.util.UnsupportedNativeLibraryException;
1819
import java.nio.file.Path;
1920
import java.nio.file.Paths;
2021

@@ -36,6 +37,9 @@ public static void main(String[] args) throws Exception {
3637
// Initialize TDLight native libraries
3738
Init.init();
3839

40+
// Set the log level
41+
Log.setLogMessageHandler(1, new Slf4JLogMessageHandler());
42+
3943
// Create the client factory
4044
try (SimpleTelegramClientFactory clientFactory = new SimpleTelegramClientFactory()) {
4145
// Obtain the API token

tdlight-java/src/main/java/it/tdlight/Init.java

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,32 +54,14 @@ public static void init() throws UnsupportedNativeLibraryException {
5454
ConstructorDetector.init();
5555
try {
5656
NativeClientAccess.execute(new SetLogVerbosityLevel(3));
57-
Log.setLogMessageHandler(3, (verbosityLevel, message) -> {
58-
switch (verbosityLevel) {
59-
case -1:
60-
case 0:
61-
case 1:
62-
LOG.error(message);
63-
break;
64-
case 2:
65-
LOG.warn(message);
66-
break;
67-
case 3:
68-
LOG.info(message);
69-
break;
70-
case 4:
71-
LOG.debug(message);
72-
break;
73-
default:
74-
LOG.trace(message);
75-
break;
76-
}
77-
});
57+
Log.setLogMessageHandler(3, new Slf4JLogMessageHandler());
58+
Log.setLogStream(null);
7859
NativeClientAccess.execute(new SetLogStream(new LogStreamEmpty()));
7960
} catch (Throwable ex) {
8061
LOG.error("Can't set verbosity level on startup", ex);
8162
}
8263
}
8364
}
8465
}
66+
8567
}

tdlight-java/src/main/java/it/tdlight/Log.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package it.tdlight;
22

33
import it.tdlight.jni.TdApi;
4+
import it.tdlight.jni.TdApi.LogStream;
45
import it.tdlight.jni.TdApi.LogStreamDefault;
6+
import it.tdlight.jni.TdApi.LogStreamEmpty;
57
import it.tdlight.jni.TdApi.LogStreamFile;
8+
import it.tdlight.jni.TdApi.SetLogStream;
69
import it.tdlight.jni.TdApi.SetLogVerbosityLevel;
710
import it.tdlight.tdnative.NativeClient.LogMessageHandler;
811
import java.util.concurrent.atomic.AtomicLong;
912
import java.util.concurrent.atomic.AtomicReference;
1013

1114
/**
12-
* Class used for managing internal TDLib logging. Use TdApi.*Log* methods instead.
15+
* Class used for managing internal TDLib logging.
1316
*/
1417
public final class Log {
1518

@@ -86,6 +89,11 @@ public static void setVerbosityLevel(int verbosityLevel) {
8689
updateLog();
8790
}
8891

92+
public static void disable() {
93+
setLogMessageHandler(0, null);
94+
setLogStream(null);
95+
}
96+
8997
/**
9098
*
9199
* Sets the log message handler
@@ -96,6 +104,14 @@ public static void setVerbosityLevel(int verbosityLevel) {
96104
* @param logMessageHandler handler
97105
*/
98106
public static void setLogMessageHandler(int maxVerbosityLevel, LogMessageHandler logMessageHandler) {
99-
NativeClientAccess.setLogMessageHandler(maxVerbosityLevel, logMessageHandler);
107+
NativeClientAccess.setLogMessageHandler(logMessageHandler != null ? maxVerbosityLevel : Math.min(maxVerbosityLevel, 1),
108+
logMessageHandler != null ? logMessageHandler : new Slf4JLogMessageHandler());
109+
}
110+
111+
/**
112+
* Sets the log stream
113+
*/
114+
public static void setLogStream(LogStream logStream) {
115+
NativeClientAccess.execute(new SetLogStream(logStream != null ? logStream : new LogStreamEmpty()));
100116
}
101117
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package it.tdlight;
2+
3+
import it.tdlight.tdnative.NativeClient;
4+
import org.slf4j.Logger;
5+
import org.slf4j.LoggerFactory;
6+
7+
public class Slf4JLogMessageHandler implements NativeClient.LogMessageHandler {
8+
9+
public static final Logger LOG = LoggerFactory.getLogger("it.tdlight.TDLight");
10+
11+
@Override
12+
public void onLogMessage(int verbosityLevel, String message) {
13+
switch (verbosityLevel) {
14+
case -1:
15+
case 0:
16+
case 1:
17+
LOG.error(message);
18+
break;
19+
case 2:
20+
LOG.warn(message);
21+
break;
22+
case 3:
23+
LOG.info(message);
24+
break;
25+
case 4:
26+
LOG.debug(message);
27+
break;
28+
default:
29+
LOG.trace(message);
30+
break;
31+
}
32+
}
33+
}

0 commit comments

Comments
 (0)