// Copyright 2015 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package mobileinit import ( "io" "log" "os" "unsafe" ) /* #include #include os_log_t create_os_log() { return os_log_create("org.golang.mobile", "os_log"); } void os_log_wrap(os_log_t log, const char *str) { os_log(log, "%s", str); } */ import "C" type osWriter struct { w C.os_log_t } func (o osWriter) Write(p []byte) (n int, err error) { cstr := C.CString(string(p)) C.os_log_wrap(o.w, cstr) C.free(unsafe.Pointer(cstr)) return len(p), nil } func init() { log.SetOutput(io.MultiWriter(os.Stderr, osWriter{C.create_os_log()})) }