From 3183c78f19e794c10ecc3fa2b437a70335401542 Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Thu, 22 Oct 2009 16:21:11 -0700 Subject: Plug into the new optimized path for Dalvik logging. --- .../android/internal/logging/AndroidHandler.java | 65 +++++++++++----------- 1 file changed, 31 insertions(+), 34 deletions(-) (limited to 'core') diff --git a/core/java/com/android/internal/logging/AndroidHandler.java b/core/java/com/android/internal/logging/AndroidHandler.java index c4a1479..12f6a4f 100644 --- a/core/java/com/android/internal/logging/AndroidHandler.java +++ b/core/java/com/android/internal/logging/AndroidHandler.java @@ -17,12 +17,16 @@ package com.android.internal.logging; import android.util.Log; +import dalvik.system.DalvikLogging; +import dalvik.system.DalvikLogHandler; -import java.util.logging.*; -import java.util.Date; -import java.text.MessageFormat; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.logging.Formatter; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; /** * Implements a {@link java.util.logging.Logger} handler that writes to the Android log. The @@ -77,7 +81,7 @@ import java.io.StringWriter; * * */ -public class AndroidHandler extends Handler { +public class AndroidHandler extends Handler implements DalvikLogHandler { /** * Holds the formatter for all Android log handlers. */ @@ -118,33 +122,13 @@ public class AndroidHandler extends Handler { @Override public void publish(LogRecord record) { - try { - int level = getAndroidLevel(record.getLevel()); - String tag = record.getLoggerName(); - - if (tag == null) { - // Anonymous logger. - tag = "null"; - } else { - // Tags must be <= 23 characters. - int length = tag.length(); - if (length > 23) { - // Most loggers use the full class name. Try dropping the - // package. - int lastPeriod = tag.lastIndexOf("."); - if (length - lastPeriod - 1 <= 23) { - tag = tag.substring(lastPeriod + 1); - } else { - // Use last 23 chars. - tag = tag.substring(tag.length() - 23); - } - } - } - - if (!Log.isLoggable(tag, level)) { - return; - } + int level = getAndroidLevel(record.getLevel()); + String tag = DalvikLogging.loggerNameToTag(record.getLoggerName()); + if (!Log.isLoggable(tag, level)) { + return; + } + try { String message = getFormatter().format(record); Log.println(level, tag, message); } catch (RuntimeException e) { @@ -152,12 +136,26 @@ public class AndroidHandler extends Handler { } } + public void publish(Logger source, String tag, Level level, String message) { + // TODO: avoid ducking into native 2x; we aren't saving any formatter calls + int priority = getAndroidLevel(level); + if (!Log.isLoggable(tag, priority)) { + return; + } + + try { + Log.println(priority, tag, message); + } catch (RuntimeException e) { + Log.e("AndroidHandler", "Error logging message.", e); + } + } + /** * Converts a {@link java.util.logging.Logger} logging level into an Android one. - * + * * @param level The {@link java.util.logging.Logger} logging level. - * - * @return The resulting Android logging level. + * + * @return The resulting Android logging level. */ static int getAndroidLevel(Level level) { int value = level.intValue(); @@ -171,5 +169,4 @@ public class AndroidHandler extends Handler { return Log.DEBUG; } } - } -- cgit v1.1