tizen 2.4 release
[framework/web/wrt-commons.git] / modules / log / src / dlog_log_provider.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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 /*
17  * @file        dlog_log_provider.cpp
18  * @author      Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
19  * @version     1.0
20  * @brief       This file is the implementation file of DLOG log provider
21  */
22 #include <stddef.h>
23 #include <dpl/log/dlog_log_provider.h>
24 #include <cstring>
25 #include <sstream>
26 #include <dlog.h>
27
28 #ifdef SECURE_LOG
29     #define INTERNAL_DLP_LOG_ SECURE_LOG
30 #else
31     #define INTERNAL_DLP_LOG_ LOG
32 #endif
33
34 /*
35  * The __extension__ keyword in the following define is required because
36  * macros used here from dlog.h use non-standard extension that cause
37  * gcc to show unwanted warnings when compiling with -pedantic switch.
38  */
39 #define INTERNAL_DLP_LOG __extension__ INTERNAL_DLP_LOG_
40
41 namespace DPL {
42 namespace Log {
43 std::string DLOGLogProvider::FormatMessage(const char *message,
44                                            const char *filename,
45                                            int line,
46                                            const char *function)
47 {
48     std::ostringstream val;
49
50     val << std::string("[") <<
51     LocateSourceFileName(filename) << std::string(":") << line <<
52     std::string("] ") << function << std::string("(): ") << message;
53
54     return val.str();
55 }
56
57 DLOGLogProvider::DLOGLogProvider()
58 {}
59
60 DLOGLogProvider::~DLOGLogProvider()
61 {}
62
63 void DLOGLogProvider::SetTag(const char *tag)
64 {
65     m_tag.Reset(strdup(tag));
66 }
67
68 void DLOGLogProvider::Debug(const char *message,
69                             const char *filename,
70                             int line,
71                             const char *function)
72 {
73     INTERNAL_DLP_LOG(LOG_DEBUG, m_tag.Get(), "%s",
74         FormatMessage(message, filename, line, function).c_str());
75 }
76
77 void DLOGLogProvider::Info(const char *message,
78                            const char *filename,
79                            int line,
80                            const char *function)
81 {
82     INTERNAL_DLP_LOG(LOG_INFO, m_tag.Get(), "%s",
83         FormatMessage(message, filename, line, function).c_str());
84 }
85
86 void DLOGLogProvider::Warning(const char *message,
87                               const char *filename,
88                               int line,
89                               const char *function)
90 {
91     INTERNAL_DLP_LOG(LOG_WARN, m_tag.Get(), "%s",
92         FormatMessage(message, filename, line, function).c_str());
93 }
94
95 void DLOGLogProvider::Error(const char *message,
96                             const char *filename,
97                             int line,
98                             const char *function)
99 {
100     INTERNAL_DLP_LOG(LOG_ERROR, m_tag.Get(), "%s",
101         FormatMessage(message, filename, line, function).c_str());
102 }
103
104 void DLOGLogProvider::Pedantic(const char *message,
105                                const char *filename,
106                                int line,
107                                const char *function)
108 {
109     INTERNAL_DLP_LOG(LOG_DEBUG, "DPL", "%s",
110         FormatMessage(message, filename, line, function).c_str());
111 }
112 }
113 } // namespace DPL
114
115 #undef INTERNAL_DLP_LOG
116 #undef INTERNAL_DLP_LOG_
117