text: /*
   * Copyright (C) 2012 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not
   * use this file except in compliance with the License. You may obtain a copy of
   * the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
   * License for the specific language governing permissions and limitations under
   * the License.
   */
  #include <stdio.h>
  #include <stdarg.h>
  
  #include "StringUtil.h"
  #include "Log.h"
  
  Log* Log::mInstance = NULL;
  
  #define ASSERT_PLAIN(cond) if(!(cond)) { fprintf(stderr, \
          "assertion failed %s %d", __FILE__, __LINE__); \
      *(char*)0 = 0; /* this will crash */};
  
  Log* Log::Instance(const char* dirName)
  {
      if (!mInstance) {
          mInstance = new Log();
          ASSERT_PLAIN(mInstance->init(dirName));
      }
      return mInstance;
  }
  void Log::Finalize()
  {
      delete mInstance;
      mInstance = NULL;
  }
  void Log::printf(LogLevel level, const char* fmt, ...)
  {
      va_list ap;
      va_start(ap, fmt);
      FileUtil::doVprintf(level < mLogLevel, level, fmt, ap);
      va_end(ap);
  }
  
  void Log::setLogLevel(LogLevel level)
  {
      mLogLevel = level;
  }
  
  Log::Log()
      : mLogLevel(ELogV)
  {
      ::fprintf(stderr, "Log level %d\n", mLogLevel);
  }
  
  Log::~Log()
  {
  
  }
  
  bool Log::init(const char* dirName)
  {
      if (dirName == NULL) {
          return true;
      }
      android::String8 logFile;
      if (logFile.appendFormat("%s/log.txt", dirName) != 0) {
          return false;
      }
      return FileUtil::init(logFile.string());
  }
  
  
  
  