在Android Studio logcat中显示java.util.logging.Logger日志
我需要在Android Studio logcat中查看socket.io-client-java中的日志。例如:在Android Studio logcat中显示java.util.logging.Logger日志,java,android,logging,logcat,Java,Android,Logging,Logcat,我需要在Android Studio logcat中查看socket.io-client-java中的日志。例如: 为什么我看不到logger.fine(String.format(“忽略%s的套接字缓存”,source))的输出在logcat中 上例中的记录器设置为Fine,但在Android Studio logcat中没有Fine级别(仅Verbose,Debug,Info,Warn,Error,Assert)。如何将级别从java.util.logging.Logger转换为Androi
Fine
,但在Android Studio logcat中没有Fine
级别(仅Verbose
,Debug
,Info
,Warn
,Error
,Assert
)。如何将级别从java.util.logging.Logger
转换为Android Studio logcat好的,Logcat不会显示它,因为默认的记录器级别是info 这是一个非常适合我的解决方案。我现在在主活动中调试socket.io
import io.socket.client.Manager;
import io.socket.client.Socket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidLoggingHandler.reset(new AndroidLoggingHandler());
java.util.logging.Logger.getLogger(Socket.class.getName()).setLevel(Level.FINEST);
java.util.logging.Logger.getLogger(io.socket.engineio.client.Socket.class.getName()).setLevel(Level.FINEST);
java.util.logging.Logger.getLogger(Manager.class.getName()).setLevel(Level.FINEST);
}
可能的util类
import android.util.Log;
import java.util.logging.*;
public class AndroidLoggingHandler extends Handler {
public static void reset(Handler rootHandler) {
Logger rootLogger = LogManager.getLogManager().getLogger("");
Handler[] handlers = rootLogger.getHandlers();
for (Handler handler : handlers) {
rootLogger.removeHandler(handler);
}
LogManager.getLogManager().getLogger("").addHandler(rootHandler);
}
@Override
public void close() {
}
@Override
public void flush() {
}
@Override
public void publish(LogRecord record) {
if (!super.isLoggable(record))
return;
String name = record.getLoggerName();
int maxLength = 30;
String tag = name.length() > maxLength ? name.substring(name.length() - maxLength) : name;
try {
int level = getAndroidLevel(record.getLevel());
Log.println(level, tag, record.getMessage());
if (record.getThrown() != null) {
Log.println(level, tag, Log.getStackTraceString(record.getThrown()));
}
} catch (RuntimeException e) {
Log.e("AndroidLoggingHandler", "Error logging message.", e);
}
}
static int getAndroidLevel(Level level) {
int value = level.intValue();
if (value >= 1000) {
return Log.ERROR;
} else if (value >= 900) {
return Log.WARN;
} else if (value >= 800) {
return Log.INFO;
} else {
return Log.DEBUG;
}
}
}
以下是原始答案:
你找到解决办法了吗?没有,但如果你也感兴趣,你可以投票赞成这个问题