1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * 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, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 #include <stdio.h>
17 #include <stdarg.h>
18 
19 #include "StringUtil.h"
20 #include "Log.h"
21 
22 Log* Log::mInstance = NULL;
23 
24 #define ASSERT_PLAIN(cond) if(!(cond)) { fprintf(stderr, \
25         "assertion failed %s %d", __FILE__, __LINE__); \
26     abort(); };
27 
Instance(const char * dirName)28 Log* Log::Instance(const char* dirName)
29 {
30     if (!mInstance) {
31         mInstance = new Log();
32         ASSERT_PLAIN(mInstance->init(dirName));
33     }
34     return mInstance;
35 }
Finalize()36 void Log::Finalize()
37 {
38     delete mInstance;
39     mInstance = NULL;
40 }
printf(LogLevel level,const char * fmt,...)41 void Log::printf(LogLevel level, const char* fmt, ...)
42 {
43     va_list ap;
44     va_start(ap, fmt);
45     FileUtil::doVprintf(level < mLogLevel, level, fmt, ap);
46     va_end(ap);
47 }
48 
setLogLevel(LogLevel level)49 void Log::setLogLevel(LogLevel level)
50 {
51     mLogLevel = level;
52 }
53 
Log()54 Log::Log()
55     : mLogLevel(ELogV)
56 {
57     ::fprintf(stderr, "Log level %d\n", mLogLevel);
58 }
59 
~Log()60 Log::~Log()
61 {
62 
63 }
64 
init(const char * dirName)65 bool Log::init(const char* dirName)
66 {
67     if (dirName == NULL) {
68         return true;
69     }
70     android::String8 logFile;
71     if (logFile.appendFormat("%s/log.txt", dirName) != 0) {
72         return false;
73     }
74     return FileUtil::init(logFile.string());
75 }
76 
77 
78 
79