blob: b510ba357ce3f3173c9749c627071dc78b4d4b2c [file] [log] [blame]
Vadim Iosevichd50ea462017-03-30 16:19:08 +03001/*
2 * Copyright (c) 2017, The Linux Foundation. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution.
13 * * Neither the name of The Linux Foundation nor the names of its
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#include "DebugLogger.h"
31#include <stdio.h>
32
33// *************************************************************************************************
34
35LogConfig g_LogConfig(LOG_SEV_INFO, false);
36
37// *************************************************************************************************
38
39LogConfig::LogConfig(LogSeverity maxSeverity, bool bPrintLocation)
Vadim Iosevich40679a12017-06-06 14:24:07 +030040 : m_MaxSeverity(maxSeverity)
Vadim Iosevich20d50d82017-09-19 11:38:15 +030041 , m_ShowStatusBar(false)
Vadim Iosevich40679a12017-06-06 14:24:07 +030042 , m_PrintLocation(bPrintLocation)
43 , m_ExitOnAssert(false)
Vadim Iosevichd50ea462017-03-30 16:19:08 +030044{
45}
46
Vadim Iosevich20d50d82017-09-19 11:38:15 +030047void LogConfig::SetStatusBarPrinter(bool statusBarShow)
48{
49 m_ShowStatusBar = statusBarShow;
50 std::cout << "m_ShowStatusBar is " << m_ShowStatusBar << std::endl;
51}
52
Vadim Iosevichd50ea462017-03-30 16:19:08 +030053void LogConfig::SetMaxSeverity(int traceLevel)
54{
Vadim Iosevich40679a12017-06-06 14:24:07 +030055 if (traceLevel > LOG_SEV_VERBOSE)
56 {
57 fprintf(stderr, "Invalid trace level, setting %d\n", LOG_SEV_VERBOSE);
58 m_MaxSeverity = LOG_SEV_VERBOSE;
59 }
60 else
61 {
62 m_MaxSeverity = static_cast<LogSeverity>(traceLevel);
63 fprintf(stdout, "Setting trace level to %d\n", m_MaxSeverity);
64 }
Vadim Iosevichd50ea462017-03-30 16:19:08 +030065}
66
67// *************************************************************************************************
68
69const char* LogMsgPrefix::SeverityToString(LogSeverity sev)
70{
Vadim Iosevich40679a12017-06-06 14:24:07 +030071 static const char* const pSeverityToString[] = { "ERR", "WRN", "INF", "DBG", "VRB" };
Vadim Iosevichd50ea462017-03-30 16:19:08 +030072
Vadim Iosevich40679a12017-06-06 14:24:07 +030073 size_t index = static_cast<size_t>(sev);
74 if (index >= sizeof(pSeverityToString) / sizeof(pSeverityToString[0]))
75 {
76 return "---";
77 }
Vadim Iosevichd50ea462017-03-30 16:19:08 +030078
Vadim Iosevich40679a12017-06-06 14:24:07 +030079 return pSeverityToString[index];
Vadim Iosevichd50ea462017-03-30 16:19:08 +030080}
81
82std::ostream& operator<<(std::ostream& os, const LogMsgPrefix& prefix)
83{
Vadim Iosevich40679a12017-06-06 14:24:07 +030084 os << '[' << LogMsgPrefix::SeverityToString(prefix.Severity) << "] ";
85 if (!g_LogConfig.ShouldPrintLocation()) return os;
86 return os << "(" << prefix.File << ':' << prefix.Line << ") ";
Vadim Iosevichd50ea462017-03-30 16:19:08 +030087}