From 865ad6a0d605d6cfce1d4503c97f6a66f201f19b Mon Sep 17 00:00:00 2001 From: Tobias Markmann <tm@ayena.de> Date: Wed, 8 Apr 2015 22:18:50 +0200 Subject: Add optional logging to native log framework on Android To enable native Android logging you need to pass "-DSWIFT_ANDROID_LOGGING" to the "cxxflags" and "-llog" to the "linkflags". Test-Information: Tested on OS X 10.9.5, with NDK API level 14 on an emulated Android 4.0 ARM instance. Tested that if enabled, Swift log messages appear in the Android system log via "adb logcat" instead of appearing on stdout. Change-Id: If89c870f0b664a5e65ccc1fa8a244826d2875ec1 diff --git a/Swiften/Base/Log.cpp b/Swiften/Base/Log.cpp index edf6f61..4879766 100644 --- a/Swiften/Base/Log.cpp +++ b/Swiften/Base/Log.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Isode Limited. + * Copyright (c) 2010-2015 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -8,6 +8,10 @@ #include <cstdio> +#if defined(SWIFT_ANDROID_LOGGING) && defined(__ANDROID__) +#include <android/log.h> +#endif + namespace Swift { @@ -17,9 +21,13 @@ Log::Log() { } Log::~Log() { +#if defined(SWIFT_ANDROID_LOGGING) && defined(__ANDROID__) + __android_log_print(ANDROID_LOG_VERBOSE, "Swift", stream.str().c_str(), 1); +#else // Using stdio for thread safety (POSIX file i/o calls are guaranteed to be atomic) fprintf(stderr, "%s", stream.str().c_str()); fflush(stderr); +#endif } std::ostringstream& Log::getStream( -- cgit v0.10.2-6-g49f6