--- /dev/null
+/*
+ * mono-log-android.c: Android-specific interface to the logger
+ *
+ * This module contains the Android logcat logger interface
+ *
+ * Author:
+ * Marek Habersack <grendel@twistedcode.net>
+ *
+ */
+#include <config.h>
+
+#if defined (PLATFORM_ANDROID)
+
+#include <android/log.h>
+#include "mono-logger-internals.h"
+
+/**
+ * mono_log_open_logcat
+ *
+ * Open access to Android logcat (no-op)
+ *
+ * @path - Not used
+ * @userData - Not used
+ */
+void
+mono_log_open_logcat (const char *path, void *userData)
+{
+ /* No-op on Android */
+}
+
+/**
+ * mono_log_write_logcat
+ *
+ * Write data to Android logcat.
+ *
+ * @domain - Identifier string
+ * @level - Logging level flags
+ * @format - Printf format string
+ * @vargs - Variable argument list
+ */
+void
+mono_log_write_logcat (const char *log_domain, GLogLevelFlags level, mono_bool hdr, const char *message)
+{
+ android_LogPriority apriority;
+
+ switch (level & G_LOG_LEVEL_MASK)
+ {
+ case G_LOG_LEVEL_ERROR:
+ apriority = ANDROID_LOG_FATAL;
+ break;
+
+ case G_LOG_LEVEL_CRITICAL:
+ apriority = ANDROID_LOG_ERROR;
+ break;
+
+ case G_LOG_LEVEL_WARNING:
+ apriority = ANDROID_LOG_WARN;
+ break;
+
+ case G_LOG_LEVEL_MESSAGE:
+ apriority = ANDROID_LOG_INFO;
+ break;
+
+ case G_LOG_LEVEL_INFO:
+ apriority = ANDROID_LOG_DEBUG;
+ break;
+
+ case G_LOG_LEVEL_DEBUG:
+ apriority = ANDROID_LOG_VERBOSE;
+ break;
+
+ default:
+ apriority = ANDROID_LOG_UNKNOWN;
+ break;
+ }
+
+ __android_log_write (apriority, log_domain, message);
+ if (apriority == ANDROID_LOG_FATAL)
+ abort ();
+}
+
+/**
+ * mono_log_close_logcat
+ *
+ * Close access to Android logcat (no-op)
+ */
+void
+mono_log_close_logcat ()
+{
+ /* No-op on Android */
+}
+#endif
void mono_log_write_logfile (const char *, GLogLevelFlags, mono_bool, const char *);
void mono_log_close_logfile (void);
+#if PLATFORM_ANDROID
+void mono_log_open_logcat (const char *path, void *userData);
+void mono_log_write_logcat (const char *log_domain, GLogLevelFlags level, mono_bool hdr, const char *message);
+void mono_log_close_logcat (void);
+#endif
+
G_END_DECLS
#endif /* __MONO_LOGGER_INTERNAL_H__ */
if(level_stack == NULL)
mono_trace_init();
+#if PLATFORM_ANDROID
+ logger.opener = mono_log_open_logcat;
+ logger.writer = mono_log_write_logcat;
+ logger.closer = mono_log_close_logcat;
+ logger.dest = (char*) dest;
+#else
if ((dest == NULL) || (strcmp("syslog", dest) != 0)) {
logger.opener = mono_log_open_logfile;
logger.writer = mono_log_write_logfile;
logger.closer = mono_log_close_logfile;
logger.dest = (char *) dest;
- mono_trace_set_log_handler_internal(&logger, NULL);
} else {
logger.opener = mono_log_open_syslog;
logger.writer = mono_log_write_syslog;
logger.closer = mono_log_close_syslog;
logger.dest = (char *) dest;
- mono_trace_set_log_handler_internal(&logger, NULL);
}
+#endif
+ mono_trace_set_log_handler_internal(&logger, NULL);
}
/**