log_apple.mm 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /*
  2. * Copyright 2017 Google LLC
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include "Firestore/core/src/util/log.h"
  17. #if defined(__APPLE__)
  18. #import <Foundation/Foundation.h>
  19. #include <cstdarg>
  20. #include <string>
  21. #import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h"
  22. #include "Firestore/core/src/util/string_apple.h"
  23. namespace firebase {
  24. namespace firestore {
  25. namespace util {
  26. namespace {
  27. const FIRLoggerService kFIRLoggerFirestore = @"[Firebase/Firestore]";
  28. // Translates a C++ LogLevel to the equivalent Objective-C FIRLoggerLevel
  29. FIRLoggerLevel ToFIRLoggerLevel(LogLevel level) {
  30. switch (level) {
  31. case kLogLevelDebug:
  32. return FIRLoggerLevelDebug;
  33. case kLogLevelNotice:
  34. return FIRLoggerLevelNotice;
  35. case kLogLevelWarning:
  36. return FIRLoggerLevelWarning;
  37. case kLogLevelError:
  38. return FIRLoggerLevelError;
  39. default:
  40. // Unsupported log level. FIRSetLoggerLevel will deal with it.
  41. return static_cast<FIRLoggerLevel>(-1);
  42. }
  43. }
  44. // Actually logs a message via FIRLogger. This must be a C varargs function
  45. // so that we can call FIRLogBasic which takes a `va_list`.
  46. void LogMessageV(LogLevel level, NSString* format, ...) {
  47. va_list list;
  48. va_start(list, format);
  49. FIRLogBasic(ToFIRLoggerLevel(level), kFIRLoggerFirestore, @"I-FST000001",
  50. format, list);
  51. va_end(list);
  52. }
  53. } // namespace
  54. void LogSetLevel(LogLevel level) {
  55. FIRSetLoggerLevel(ToFIRLoggerLevel(level));
  56. }
  57. // Note that FIRLogger's default level can be changed by persisting a
  58. // debug_mode setting in user defaults. Check for defaults getting in your way
  59. // with:
  60. //
  61. // defaults read firestore_util_test
  62. //
  63. // You can change it with:
  64. //
  65. // defaults write firestore_util_test /google/firebase/debug_mode NO
  66. bool LogIsLoggable(LogLevel level) {
  67. return FIRIsLoggableLevel(ToFIRLoggerLevel(level), false);
  68. }
  69. void LogMessage(LogLevel level, const std::string& message) {
  70. LogMessageV(level, @"%@", MakeNSString(message));
  71. }
  72. } // namespace util
  73. } // namespace firestore
  74. } // namespace firebase
  75. #endif // defined(__APPLE__)