xaiefal
Toggle main menu visibility
Loading...
Searching...
No Matches
src
common
xaiefal-log.hpp
Go to the documentation of this file.
1
// Copyright(C) 2020 - 2021 by Xilinx, Inc. All rights reserved.
2
// SPDX-License-Identifier: MIT
3
4
#include <iostream>
5
#include <functional>
6
7
#pragma once
8
9
namespace
xaiefal
{
10
enum class
LogLevel
{
11
FAL_DEBUG
,
12
FAL_INFO
,
13
FAL_WARN
,
14
FAL_ERROR
,
15
FAL_MAX
,
16
};
17
18
class
Logger
19
{
20
private
:
21
Logger() :
Level
(
LogLevel::FAL_INFO
) {}
22
public
:
23
LogLevel
Level
;
24
std::ofstream
of
;
25
std::ofstream
ofnull
;
26
27
~Logger
() {}
28
29
void
setLogLevel
(
LogLevel
Lvl) {
30
Level
= Lvl;
31
}
32
33
LogLevel
getLogLevel
() {
34
return
Level
;
35
}
36
37
void
setLogFile
(
const
std::string& File) {
38
of
.open(File);
39
}
40
41
Logger
(
const
Logger&) =
delete
;
42
Logger&
operator=
(
const
Logger &) =
delete
;
43
Logger
(Logger &&) =
delete
;
44
Logger &
operator=
(Logger &&) =
delete
;
45
static
Logger &
get
() {
46
static
Logger logger;
47
48
return
logger;
49
}
50
static
std::ostream &
log
(
LogLevel
Lvl=
LogLevel::FAL_MAX
) {
51
const
char
* label;
52
53
switch
(Lvl) {
54
case
LogLevel::FAL_DEBUG
: label =
"XAIEFAL: DEBUG: "
;
break
;
55
case
LogLevel::FAL_INFO
: label =
"XAIEFAL: INFO: "
;
break
;
56
case
LogLevel::FAL_WARN
: label =
"XAIEFAL: WARN: "
;
break
;
57
case
LogLevel::FAL_ERROR
: label =
"XAIEFAL: ERROR: "
;
break
;
58
default
: label =
""
;
break
;
59
}
60
61
if
(
get
().
Level
<= Lvl) {
62
if
(
get
().
of
.rdbuf()->is_open()) {
63
get
().
of
<< label;
64
return
get
().
of
;
65
}
else
{
66
std::cout << label;
67
return
std::cout;
68
}
69
}
else
{
70
return
get
().
ofnull
;
71
}
72
}
73
74
};
75
}
xaiefal::Logger::ofnull
std::ofstream ofnull
Definition
xaiefal-log.hpp:25
xaiefal::Logger::~Logger
~Logger()
Definition
xaiefal-log.hpp:27
xaiefal::Logger::log
static std::ostream & log(LogLevel Lvl=LogLevel::FAL_MAX)
Definition
xaiefal-log.hpp:50
xaiefal::Logger::Logger
Logger(Logger &&)=delete
xaiefal::Logger::setLogLevel
void setLogLevel(LogLevel Lvl)
Definition
xaiefal-log.hpp:29
xaiefal::Logger::of
std::ofstream of
Definition
xaiefal-log.hpp:24
xaiefal::Logger::Level
LogLevel Level
Definition
xaiefal-log.hpp:23
xaiefal::Logger::operator=
Logger & operator=(Logger &&)=delete
xaiefal::Logger::get
static Logger & get()
Definition
xaiefal-log.hpp:45
xaiefal::Logger::getLogLevel
LogLevel getLogLevel()
Definition
xaiefal-log.hpp:33
xaiefal::Logger::Logger
Logger(const Logger &)=delete
xaiefal::Logger::operator=
Logger & operator=(const Logger &)=delete
xaiefal::Logger::setLogFile
void setLogFile(const std::string &File)
Definition
xaiefal-log.hpp:37
xaiefal
Definition
xaiefal-base.hpp:23
xaiefal::LogLevel
LogLevel
Definition
xaiefal-log.hpp:10
xaiefal::LogLevel::FAL_DEBUG
@ FAL_DEBUG
Definition
xaiefal-log.hpp:11
xaiefal::LogLevel::FAL_INFO
@ FAL_INFO
Definition
xaiefal-log.hpp:12
xaiefal::LogLevel::FAL_ERROR
@ FAL_ERROR
Definition
xaiefal-log.hpp:14
xaiefal::LogLevel::FAL_MAX
@ FAL_MAX
Definition
xaiefal-log.hpp:15
xaiefal::LogLevel::FAL_WARN
@ FAL_WARN
Definition
xaiefal-log.hpp:13
Generated on
for xaiefal by
1.17.0