Merge pull request #3705 from BrzVlad/fix-sgen-internal-alloc
[mono.git] / mono / utils / mono-log-android.c
1 /*
2  * mono-log-android.c: Android-specific interface to the logger
3  *
4  * This module contains the Android logcat logger interface
5  *
6  * Author:
7  *    Marek Habersack <grendel@twistedcode.net>
8  *
9  */
10 #include <config.h>
11
12 #if defined (PLATFORM_ANDROID)
13
14 #include <android/log.h>
15 #include "mono-logger-internals.h"
16
17 /**
18  * mono_log_open_logcat
19  *
20  *      Open access to Android logcat (no-op)
21  *
22  *      @path - Not used
23  *      @userData - Not used
24  */   
25 void
26 mono_log_open_logcat (const char *path, void *userData)
27 {
28         /* No-op on Android */
29 }
30
31 /**
32  * mono_log_write_logcat
33  *
34  *      Write data to Android logcat.
35  *
36  *      @domain - Identifier string
37  *      @level - Logging level flags
38  *      @format - Printf format string
39  *      @vargs - Variable argument list
40  */
41 void
42 mono_log_write_logcat (const char *log_domain, GLogLevelFlags level, mono_bool hdr, const char *message)
43 {
44         android_LogPriority apriority;
45
46         switch (level & G_LOG_LEVEL_MASK)
47         {
48                 case G_LOG_LEVEL_ERROR:
49                         apriority = ANDROID_LOG_FATAL;
50                         break;
51
52                 case G_LOG_LEVEL_CRITICAL:
53                         apriority = ANDROID_LOG_ERROR;
54                         break;
55
56                 case G_LOG_LEVEL_WARNING:
57                         apriority = ANDROID_LOG_WARN;
58                         break;
59
60                 case G_LOG_LEVEL_MESSAGE:
61                         apriority = ANDROID_LOG_INFO;
62                         break;
63
64                 case G_LOG_LEVEL_INFO:
65                         apriority = ANDROID_LOG_DEBUG;
66                         break;
67
68                 case G_LOG_LEVEL_DEBUG:
69                         apriority = ANDROID_LOG_VERBOSE;
70                         break;
71
72                 default:
73                         apriority = ANDROID_LOG_UNKNOWN;
74                         break;
75         }
76
77         __android_log_write (apriority, log_domain, message);
78         if (apriority == ANDROID_LOG_FATAL)
79                 abort ();
80 }
81
82 /**
83  * mono_log_close_logcat
84  *
85  *      Close access to Android logcat (no-op)
86  */
87 void
88 mono_log_close_logcat ()
89 {
90         /* No-op on Android */
91 }
92 #endif