Skip to content
This repository was archived by the owner on Dec 29, 2025. It is now read-only.

Commit 971fc53

Browse files
authored
Create Logger.java
1 parent c0eebaa commit 971fc53

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package org.levimc.launcher.util;
2+
3+
public class Logger implements AutoCloseable {
4+
private long nativeLoggerPtr;
5+
6+
private static class Holder {
7+
private static final Logger INSTANCE = new Logger("LeviMC/@alvinqid");
8+
}
9+
10+
public static Logger get() {
11+
return Holder.INSTANCE;
12+
}
13+
14+
private Logger(String loggerName) {
15+
nativeLoggerPtr = nativeCreateLogger(loggerName);
16+
}
17+
18+
public static void release() {
19+
Holder.INSTANCE.close();
20+
}
21+
22+
@Override
23+
protected void finalize() throws Throwable {
24+
close();
25+
super.finalize();
26+
}
27+
28+
private native long nativeCreateLogger(String name);
29+
30+
private native void nativeDestroyLogger(long nativeLoggerPtr);
31+
32+
private native void nativeInfo(long nativeLoggerPtr, String msg);
33+
34+
private native void nativeError(long nativeLoggerPtr, String msg);
35+
36+
private native void nativeWarn(long nativeLoggerPtr, String msg);
37+
38+
private native void nativeDebug(long nativeLoggerPtr, String msg);
39+
40+
public void info(String msg, Object... args) {
41+
if (nativeLoggerPtr != 0)
42+
nativeInfo(nativeLoggerPtr, format(msg, args));
43+
}
44+
45+
public void error(String msg, Object... args) {
46+
if (nativeLoggerPtr != 0)
47+
nativeError(nativeLoggerPtr, format(msg, args));
48+
}
49+
50+
public void warn(String msg, Object... args) {
51+
if (nativeLoggerPtr != 0)
52+
nativeWarn(nativeLoggerPtr, format(msg, args));
53+
}
54+
55+
public void debug(String msg, Object... args) {
56+
if (nativeLoggerPtr != 0)
57+
nativeDebug(nativeLoggerPtr, format(msg, args));
58+
}
59+
60+
@Override
61+
public void close() {
62+
if (nativeLoggerPtr != 0) {
63+
nativeDestroyLogger(nativeLoggerPtr);
64+
nativeLoggerPtr = 0;
65+
}
66+
}
67+
68+
private String format(String msg, Object... args) {
69+
try {
70+
return args == null || args.length == 0 ? msg : String.format(msg, args);
71+
} catch (Exception e) {
72+
return msg;
73+
}
74+
}
75+
}

0 commit comments

Comments
 (0)