xaiefal
Loading...
Searching...
No Matches
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
9namespace xaiefal {
17
18 class Logger
19 {
20 private:
21 Logger() : Level(LogLevel::FAL_INFO) {}
22 public:
24 std::ofstream of;
25 std::ofstream ofnull;
26
28
30 Level = Lvl;
31 }
32
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}
std::ofstream ofnull
Definition xaiefal-log.hpp:25
~Logger()
Definition xaiefal-log.hpp:27
static std::ostream & log(LogLevel Lvl=LogLevel::FAL_MAX)
Definition xaiefal-log.hpp:50
Logger(Logger &&)=delete
void setLogLevel(LogLevel Lvl)
Definition xaiefal-log.hpp:29
std::ofstream of
Definition xaiefal-log.hpp:24
LogLevel Level
Definition xaiefal-log.hpp:23
Logger & operator=(Logger &&)=delete
static Logger & get()
Definition xaiefal-log.hpp:45
LogLevel getLogLevel()
Definition xaiefal-log.hpp:33
Logger(const Logger &)=delete
Logger & operator=(const Logger &)=delete
void setLogFile(const std::string &File)
Definition xaiefal-log.hpp:37
Definition xaiefal-base.hpp:23
LogLevel
Definition xaiefal-log.hpp:10
@ FAL_DEBUG
Definition xaiefal-log.hpp:11
@ FAL_INFO
Definition xaiefal-log.hpp:12
@ FAL_ERROR
Definition xaiefal-log.hpp:14
@ FAL_MAX
Definition xaiefal-log.hpp:15
@ FAL_WARN
Definition xaiefal-log.hpp:13