| /* |
| * 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()); |
| } |
| |
| |
| |