| 29 | type androidLogger struct{} |
| 30 | |
| 31 | func (l *androidLogger) Handle(msg log.Message) { |
| 32 | var priority = C.ANDROID_LOG_FATAL // this value should never be used in client mode |
| 33 | var message string |
| 34 | switch msg := msg.(type) { |
| 35 | case *log.GeneralMessage: |
| 36 | switch msg.Severity { |
| 37 | case log.Severity_Error: |
| 38 | priority = C.ANDROID_LOG_ERROR |
| 39 | case log.Severity_Warning: |
| 40 | priority = C.ANDROID_LOG_WARN |
| 41 | case log.Severity_Info: |
| 42 | priority = C.ANDROID_LOG_INFO |
| 43 | case log.Severity_Debug: |
| 44 | priority = C.ANDROID_LOG_DEBUG |
| 45 | } |
| 46 | message = serial.ToString(msg.Content) |
| 47 | default: |
| 48 | message = msg.String() |
| 49 | } |
| 50 | cstr := C.CString(message) |
| 51 | defer C.free(unsafe.Pointer(cstr)) |
| 52 | C.__android_log_write(C.int(priority), ctag, cstr) |
| 53 | } |
| 54 | |
| 55 | func logInit() { |
| 56 | common.Must(alog.RegisterHandlerCreator(alog.LogType_Console, func(_ alog.LogType, _ alog.HandlerCreatorOptions) (log.Handler, error) { |