fix: decode Logger.java and fix WARN/tag corruption
This commit is contained in:
@@ -1,95 +1,104 @@
|
|||||||
cGFja2FnZSBhbmRyb2lkLnNlcmlhbHBvcnQudXRpbHM7CgppbXBvcnQgYW5kcm9pZC5vcy5CdWls
|
package android.serialport.utils;
|
||||||
ZDsKCmltcG9ydCBqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbjsKCgovKioKICogQ3Jl
|
|
||||||
YXRlZCBieSBBZGl0eWEgR2FuZ2FzYWdhciBvbiAxMy1KdWx5LTIwLgogKiBGb3IgQ3JvcERhdGEg
|
import android.os.Build;
|
||||||
VGVjaG5vbG9neSBQdnQuIEx0ZC4KICovCgpwdWJsaWMgY2xhc3MgTG9nZ2VyIHsKICAgIHByaXZh
|
|
||||||
dGUgc3RhdGljIFN0cmluZyBUQUc9IlRFU1RfTE9HIjsKCiAgICBwdWJsaWMgc3RhdGljIGZpbmFs
|
import java.util.IllegalFormatException;
|
||||||
IGludCBWRVJCT1NFID0gYW5kcm9pZC51dGlsLkxvZy5WRVJCT1NFOwogICAgcHVibGljIHN0YXRp
|
|
||||||
YyBmaW5hbCBpbnQgREVCVUcgPSBhbmRyb2lkLnV0aWwuTG9nLkRFQlVHOwogICAgcHVibGljIHN0
|
|
||||||
YXRpYyBmaW5hbCBpbnQgSU5GTyA9IGFuZHJvaWQudXRpbC5Mb2cuSU5GTzsKICAgIHB1YmxpYyBz
|
/**
|
||||||
dGF0aWMgZmluYWwgaW50IFdBUk4gPSBhbmRyb2lkLnV0aWwuTG9nLldBUk47CiAgICBwdWJsaWMg
|
* Created by Aditya Gangasagar on 13-July-20.
|
||||||
c3RhdGljIGZpbmFsIGludCBFUlJPUiA9IGFuZHJvaWQudXRpbC5Mb2cuRVJST1I7CiAgICBwdWJs
|
* For CropData Technology Pvt. Ltd.
|
||||||
aWMgc3RhdGljIGZpbmFsIGludCBBU1NFUlQgPSBhbmRyb2lkLnV0aWwuTG9nLkFTU0VSVDsKCiAg
|
*/
|
||||||
ICBwcml2YXRlIExvZ2dlcigpIHt9CgogICAgcHVibGljIHN0YXRpYyBpbnQgdihmaW5hbCBTdHJp
|
|
||||||
bmcgdGFnLCBmaW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coVkVSQk9TRSwgdGFnLCBtc2cs
|
public class Logger {
|
||||||
IChUaHJvd2FibGUpIG51bGwpOyB9CiAgICBwdWJsaWMgc3RhdGljIGludCB2KGZpbmFsIFN0cmlu
|
private static String TAG="TEST_LOG";
|
||||||
ZyB0YWcsIGZpbmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdC4uLiBhcmdzKSB7IHJldHVybiBs
|
|
||||||
b2coVkVSQk9TRSwgdGFnLCBtc2csIGFyZ3MpOyB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgZChm
|
public static final int VERBOSE = android.util.Log.VERBOSE;
|
||||||
aW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coREVCVUcsIFRBRywgbXNnLCAoVGhyb3dhYmxl
|
public static final int DEBUG = android.util.Log.DEBUG;
|
||||||
KSBudWxsKTsgfQogICAgcHVibGljIHN0YXRpYyBpbnQgZChmaW5hbCBTdHJpbmcgdGFnLCBmaW5h
|
public static final int INFO = android.util.Log.INFO;
|
||||||
bCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coREVCVUcsIHRhZywgbXNnLCAoVGhyb3dhYmxlKSBu
|
public static final int WARN = android.util.Log.WARN;
|
||||||
dWxsKTsgfQogICAgcHVibGljIHN0YXRpYyBpbnQgZChmaW5hbCBTdHJpbmcgdGFnLCBmaW5hbCBT
|
public static final int ERROR = android.util.Log.ERROR;
|
||||||
dHJpbmcgbXNnLCBmaW5hbCBPYmplY3QuLi4gYXJncykgeyByZXR1cm4gbG9nKERFQlVHLCB0YWcs
|
public static final int ASSERT = android.util.Log.ASSERT;
|
||||||
IG1zZywgYXJncyk7IH0KICAgIHB1YmxpYyBzdGF0aWMgaW50IGQoZmluYWwgU3RyaW5nIG1zZywg
|
|
||||||
ZmluYWwgT2JqZWN0Li4uIGFyZ3MpIHsgcmV0dXJuIGxvZyhERUJVRywgVEFHLCBtc2csIGFyZ3Mp
|
private Logger() {}
|
||||||
OyB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIGRMb25nKFN0cmluZyBUQUcsIFN0cmluZyBtZXNz
|
|
||||||
YWdlKSB7CiAgICAgICAgaW50IG1heExvZ1NpemUgPSAyMDAwOwogICAgICAgIGZvciAoaW50IGkg
|
public static int v(final String tag, final String msg) { return log(VERBOSE, tag, msg, (Throwable) null); }
|
||||||
PSAwOyBpIDw9IG1lc3NhZ2UubGVuZ3RoKCkgLyBtYXhMb2dTaXplOyBpKyspIHsKICAgICAgICAg
|
public static int v(final String tag, final String msg, final Object... args) { return log(VERBOSE, tag, msg, args); }
|
||||||
ICAgaW50IHN0YXJ0ID0gaSAqIG1heExvZ1NpemU7CiAgICAgICAgICAgIGludCBlbmQgPSBNYXRo
|
|
||||||
Lm1pbigoaSArIDEpICogbWF4TG9nU2l6ZSwgbWVzc2FnZS5sZW5ndGgoKSk7CiAgICAgICAgICAg
|
public static int d(final String msg) { return log(DEBUG, TAG, msg, (Throwable) null); }
|
||||||
IGFuZHJvaWQudXRpbC5Mb2cuZChUQUcsIG1lc3NhZ2Uuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpKTsK
|
public static int d(final String tag, final String msg) { return log(DEBUG, tag, msg, (Throwable) null); }
|
||||||
ICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgaShmaW5hbCBTdHJpbmcgdGFn
|
public static int d(final String tag, final String msg, final Object... args) { return log(DEBUG, tag, msg, args); }
|
||||||
LCBmaW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coSU5GTywgdGFnLCBtc2csIChUaHJvd2Fi
|
public static int d(final String msg, final Object... args) { return log(DEBUG, TAG, msg, args); }
|
||||||
bGUpIG51bGwpOyB9CiAgICBwdWJsaWMgc3RhdGljIGludCBpKGZpbmFsIFN0cmluZyB0YWcsIGZp
|
|
||||||
bmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdC4uLiBhcmdzKSB7IHJldHVybiBsb2coSU5GTywg
|
public static void dLong(String TAG, String message) {
|
||||||
dGFnLCBtc2csIGFyZ3MpOyB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgdyhmaW5hbCBTdHJpbmcg
|
int maxLogSize = 2000;
|
||||||
dGFnLCBmaW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coV0FSTiwgdGFnLCBtc2csIChUaHJv
|
for (int i = 0; i <= message.length() / maxLogSize; i++) {
|
||||||
d2FibGUpIG51bGwpOyB9CiAgICBwdWJsaWMgc3RhdGljIGludCB3KGZpbmFsIFN0cmluZyB0YWcs
|
int start = i * maxLogSize;
|
||||||
IGZpbmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdC4uLiBhcmdzKSB7IHJldHVybiBsb2coV0FY
|
int end = Math.min((i + 1) * maxLogSize, message.length());
|
||||||
Tiwgd…mFnLCBtc2csIGFyZ3MpOyB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgZShmaW5hbCBTdHJp
|
android.util.Log.d(TAG, message.substring(start, end));
|
||||||
bmcgdGFnLCBmaW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coRVJST1IsIHRhZywgbXNnLCAo
|
}
|
||||||
VGhyb3dhYmxlKSBudWxsKTsgfQogICAgcHVibGljIHN0YXRpYyBpbnQgZShmaW5hbCBTdHJpbmcg
|
}
|
||||||
dGFnLCBTdHJpbmcgbXNnLCBmaW5hbCBPYmplY3QuLi4gYXJncykgeyByZXR1cm4gbG9nKEVSUk9S
|
|
||||||
LCB0YWcsIG1zZywgYXJncyk7IH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgZUxvbmcoU3RyaW5n
|
public static int i(final String tag, final String msg) { return log(INFO, tag, msg, (Throwable) null); }
|
||||||
IFRBRywgU3RyaW5nIG1lc3NhZ2UpIHsKICAgICAgICBpbnQgbWF4TG9nU2l6ZSA9IDIwMDA7CiAg
|
public static int i(final String tag, final String msg, final Object... args) { return log(INFO, tag, msg, args); }
|
||||||
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbWVzc2FnZS5sZW5ndGgoKSAvIG1heExvZ1NpemU7
|
|
||||||
IGkrKykgewogICAgICAgICAgICBpbnQgc3RhcnQgPSBpICogbWF4TG9nU2l6ZTsKICAgICAgICAg
|
public static int w(final String tag, final String msg) { return log(WARN, tag, msg, (Throwable) null); }
|
||||||
ICAgaW50IGVuZCA9IE1hdGgubWluKChpICsgMSkgKiBtYXhMb2dTaXplLCBtZXNzYWdlLmxlbmd0
|
public static int w(final String tag, final String msg, final Object... args) { return log(WARN, tag, msg, args); }
|
||||||
aCgpKTsKICAgICAgICAgICAgYW5kcm9pZC51dGlsLkxvZy5kKFRBRywgbWVzc2FnZS5zdWJzdHJp
|
|
||||||
bmcoc3RhcnQsIGVuZCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGludCB3
|
public static int e(final String tag, final String msg) { return log(ERROR, tag, msg, (Throwable) null); }
|
||||||
dGYoZmluYWwgU3RyaW5nIHRhZywgZmluYWwgU3RyaW5nIG1zZykgeyByZXR1cm4gbG9nKEFTU0VS
|
public static int e(final String tag, String msg, final Object... args) { return log(ERROR, tag, msg, args); }
|
||||||
VCwgdGFnLCBtc2csIChUaHJvd2FibGUpIG51bGwpOyB9CiAgICBwdWJsaWMgc3RhdGljIGludCB3
|
|
||||||
dGYoZmluYWwgU3RyaW5nIHRhZywgZmluYWwgU3RyaW5nIG1zZywgZmluYWwgT2JqZWN0Li4uIGFy
|
public static void eLong(String TAG, String message) {
|
||||||
Z3MpIHsgcmV0dXJuIGxvZyhBU1NFUlQsIHRhZywgbXNnLCBhcmdzKTsgfQoKICAgIHB1YmxpYyBz
|
int maxLogSize = 2000;
|
||||||
dGF0aWMgYm9vbGVhbiBpc0xvZ2dhYmxlKGZpbmFsIFN0cmluZyB0YWcsIGludCBsZXZlbCkgeyBy
|
for (int i = 0; i <= message.length() / maxLogSize; i++) {
|
||||||
ZXR1cm4gYW5kcm9pZC51dGlsLkxvZy5pc0xvZ2dhYmxlKHRhZywgbGV2ZWwpOyB9CgogICAgcHJp
|
int start = i * maxLogSize;
|
||||||
dmF0ZSBzdGF0aWMgaW50IGxvZyhmaW5hbCBpbnQgbGV2ZWwsIGZpbmFsIFN0cmluZyB0YWcsIGZp
|
int end = Math.min((i + 1) * maxLogSize, message.length());
|
||||||
bmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdFtdIGFyZ3MpIHsKICAgICAgICBpZiAoYXJncyA9
|
android.util.Log.d(TAG, message.substring(start, end));
|
||||||
PSBudWxsIHx8IGFyZ3MubGVuZ3RoID09IDApIHsgcmV0dXJuIGxvZyhsZXZlbCwgdGFnLCBtc2cs
|
}
|
||||||
IChUaHJvd2FibGUpIG51bGwpOyB9CiAgICAgICAgaW50IGwgPSBhcmdzLmxlbmd0aDsKICAgICAg
|
}
|
||||||
ICBUaHJvd2FibGUgdHI7CiAgICAgICAgT2JqZWN0W10gZmFyZ3M7CiAgICAgICAgaWYgKGFyZ3Nb
|
|
||||||
bCAtIDFdIGluc3RhbmNlb2YgVGhyb3dhYmxlKSB7CiAgICAgICAgICAgIGwgLT0gMTsgdHIgPSAo
|
public static int wtf(final String tag, final String msg) { return log(ASSERT, tag, msg, (Throwable) null); }
|
||||||
VGhyb3dhYmxlKSBhcmdzW2xdOyBmYXJncyA9IG5ldyBPYmplY3RbbF07IFN5c3RlbS5hcnJheWNv
|
public static int wtf(final String tag, final String msg, final Object... args) { return log(ASSERT, tag, msg, args); }
|
||||||
cHkoYXJncywgMCwgZmFyZ3MsIDAsIGwpOwogICAgICAgIH0gZWxzZSB7IHRyID0gbnVsbDsgZmFy
|
|
||||||
Z3MgPSBhcmdzOyB9CiAgICAgICAgaWYgKGwgPT0gMCkgeyByZXR1cm4gbG9nKGxldmVsLCB0YWcs
|
public static boolean isLoggable(final String tag, int level) { return android.util.Log.isLoggable(tag, level); }
|
||||||
IG1zZywgdHIpOyB9CiAgICAgICAgcmV0dXJuIGxvZyhsZXZlbCwgdGFnLCBtc2csIGZhcmdzLCB0
|
|
||||||
cik7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgaW50IGxvZyhmaW5hbCBpbnQgbGV2ZWwsIGZp
|
private static int log(final int level, final String tag, final String msg, final Object[] args) {
|
||||||
bmFsIFN0cmluZyB0YWcsIGZpbmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdFtdIGFyZ3MsIGZp
|
if (args == null || args.length == 0) { return log(level, tag, msg, (Throwable) null); }
|
||||||
bmFsIFRocm93YWJsZSB0cikgewogICAgICAgIGlmIChtc2cuY29udGFpbnMoIiUiKSkgewogICAg
|
int l = args.length;
|
||||||
ICAgICAgICB0cnkgeyByZXR1cm4gbG9nKGxldmVsLCB0YWcsIFN0cmluZy5mb3JtYXQobXNnLCBh
|
Throwable tr;
|
||||||
cmdzKSwgdHIpOyB9IGNhdGNoIChJbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIGUpIHt9CiAgICAgICAg
|
Object[] fargs;
|
||||||
fQogICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcihtc2cpOwogICAg
|
if (args[l - 1] instanceof Throwable) {
|
||||||
ICAgIGZvciAoT2JqZWN0IGEgOiBhcmdzKSB7IHNiLmFwcGVuZChhKTsgfQogICAgICAgIHJldHVy
|
l -= 1; tr = (Throwable) args[l]; fargs = new Object[l]; System.arraycopy(args, 0, fargs, 0, l);
|
||||||
biBsb2cobGV2ZWwsIHRhZywgc2IudG9TdHJpbmcoKSwgdHIpOwogICAgfQoKICAgIHByaXZhdGUg
|
} else { tr = null; fargs = args; }
|
||||||
c3RhdGljIGludCBsb2coZmluYWwgaW50IGxldmVsLCBmaW5hbCBTdHJpbmcgdGFnLCBmaW5hbCBT
|
if (l == 0) { return log(level, tag, msg, tr); }
|
||||||
dHJpbmcgbXNnLCBmaW5hbCBUaHJvd2FibGUgdHIpIHsKICAgICAgICBpZiAoIVNlcmlhbFBvcnRD
|
return log(level, tag, msg, fargs, tr);
|
||||||
b25zdGFudHMuTE9HX0VOQUJMRUQpIHsgcmV0dXJuIC0xOyB9CiAgICAgICAgdHJ5IHsgU2VyaWFs
|
}
|
||||||
UG9ydEFwcFV0aWxzLmdldEluc3RhbmNlKCkuYXBwZW5kTG9nKG1zZyk7IH0gY2F0Y2ggKEV4Y2Vw
|
|
||||||
dGlvbiBlKSB7fQogICAgICAgIHN3aXRjaCAobGV2ZWwpIHsKICAgICAgICAgICAgY2FzZSBWRVJC
|
private static int log(final int level, final String tag, final String msg, final Object[] args, final Throwable tr) {
|
||||||
T1NFOiByZXR1cm4gdHIgPT0gbnVsbCA/IGFuZHJvaWQudXRpbC5Mb2cudih0YWcsIG1zZykgOiBh
|
if (msg.contains("%")) {
|
||||||
bmRyb2lkLnV0aWwuTG9nLnYodGFnLCBtc2csIHRyKTsKICAgICAgICAgICAgY2FzZSBERUJVRzog
|
try { return log(level, tag, String.format(msg, args), tr); } catch (IllegalFormatException e) {}
|
||||||
cmV0dXJuIHRyID09IG51bGwgPyBhbmRyb2lkLnV0aWwuTG9nLmQodGFnLCBtc2cpIDogYW5kcm9p
|
}
|
||||||
ZC51dGlsLkxvZy5kKHRhZywgbXNnLCB0cik7CiAgICAgICAgICAgIGNhc2UgSU5GTzogcmV0dXJu
|
StringBuilder sb = new StringBuilder(msg);
|
||||||
IHRyID09IG51bGwgPyBhbmRyb2lkLnV0aWwuTG9nLmkodGFnLCBtc2cpIDogYW5kcm9pZC51dGls
|
for (Object a : args) { sb.append(a); }
|
||||||
LkxvZy5pKHRhZywgbXNnLCB0cik7CiAgICAgICAgICAgIGNhc2UgV0FSTjogcmV0dXJuIHRyID09
|
return log(level, tag, sb.toString(), tr);
|
||||||
IG51bGwgPyBhbmRyb2lkLnV0aWwuTG9nLncodGFnLCBtc2cpIDogYW5kcm9pZC51dGlsLkxvZy53
|
}
|
||||||
KHRhZywgbXNnLCB0cik7CiAgICAgICAgICAgIGNhc2UgRVJST1I6IHJldHVybiB0ciA9PSBudWxs
|
|
||||||
ID8gYW5kcm9pZC51dGlsLkxvZy5lKHRhZywgbXNnKSA6IGFuZHJvaWQudXRpbC5Mb2cuZSh0YWcs
|
private static int log(final int level, final String tag, final String msg, final Throwable tr) {
|
||||||
IG1zZywgdHIpOwogICAgICAgICAgICBjYXNlIEFTU0VSVDoKICAgICAgICAgICAgICAgIGlmIChC
|
if (!SerialPortConstants.LOG_ENABLED) { return -1; }
|
||||||
dWlsZC5WRVJTSU9OLlNES19JTlQgPj0gQnVpbGQuVkVSU0lPTl9DT0RFUy5GUk9ZTykgewogICAg
|
try { SerialPortAppUtils.getInstance().appendLog(msg); } catch (Exception e) {}
|
||||||
ICAgICAgICAgICAgICAgIHJldHVybiB0ciA9PSBudWxsID8gYW5kcm9pZC51dGlsLkxvZy53dGYo
|
switch (level) {
|
||||||
dGFnLCBtc2cpIDogYW5kcm9pZC51dGlsLkxvZy53dGYodGFnLCBtc2csIHRyKTsKICAgICAgICAg
|
case VERBOSE: return tr == null ? android.util.Log.v(tag, msg) : android.util.Log.v(tag, msg, tr);
|
||||||
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyID09IG51bGwgPyBh
|
case DEBUG: return tr == null ? android.util.Log.d(tag, msg) : android.util.Log.d(tag, msg, tr);
|
||||||
bmRyb2lkLnV0aWwuTG9nLmUodGFnLCBtc2cpIDogYW5kcm9pZC51dGlsLkxvZy5lKHRhZywgbXNn
|
case INFO: return tr == null ? android.util.Log.i(tag, msg) : android.util.Log.i(tag, msg, tr);
|
||||||
LCB0cik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBJ
|
case WARN: return tr == null ? android.util.Log.w(tag, msg) : android.util.Log.w(tag, msg, tr);
|
||||||
bGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgbG9nIGxldmVsOiAiICsgbGV2ZWwpOwog
|
case ERROR: return tr == null ? android.util.Log.e(tag, msg) : android.util.Log.e(tag, msg, tr);
|
||||||
ICAgICAgIH0KICAgIH0KfQo=
|
case ASSERT:
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
|
||||||
|
return tr == null ? android.util.Log.wtf(tag, msg) : android.util.Log.wtf(tag, msg, tr);
|
||||||
|
} else {
|
||||||
|
return tr == null ? android.util.Log.e(tag, msg) : android.util.Log.e(tag, msg, tr);
|
||||||
|
}
|
||||||
|
default: throw new IllegalArgumentException("Invalid log level: " + level);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user