ONE - On-device Neural Engine
Loading...
Searching...
No Matches
logging.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2018 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
#ifndef __ONERT_UTIL_LOGGING_H__
18
#define __ONERT_UTIL_LOGGING_H__
19
20
#include <iostream>
21
#include <cstring>
22
23
#include "
util/ConfigSource.h
"
24
25
namespace
onert::util::logging
26
{
27
28
class
Context
29
{
30
public
:
31
Context
() noexcept : _enabled{
false
}
32
{
33
const
auto
env =
util::getConfigBool
(util::config::ENABLE_LOG);
34
35
if
(env)
36
{
37
_enabled =
true
;
38
}
39
}
40
41
static
Context
&
get
() noexcept;
42
43
public:
44
bool
enabled
(
void
)
const
{
return
_enabled; }
45
void
update
(
void
) { _enabled =
util::getConfigBool
(util::config::ENABLE_LOG); }
46
47
private
:
48
bool
_enabled;
49
};
50
51
static
inline
Context &ctx =
Context::get
();
52
53
inline
std::string
decorated_name
(
const
char
*input)
54
{
55
const
int
min_prefix = 16;
56
std::string prefix(input);
57
auto
len_prefix = prefix.size();
58
if
(len_prefix > min_prefix)
59
return
"["
+ prefix +
"] "
;
60
std::string spaces((min_prefix - len_prefix) / 2,
' '
);
61
return
(len_prefix % 2 ?
"[ "
:
"["
) + spaces + prefix + spaces +
"] "
;
62
}
63
64
}
// namespace onert::util::logging
65
66
#define VERBOSE(name) \
67
if (::onert::util::logging::ctx.enabled()) \
68
std::cout << ::onert::util::logging::decorated_name(#name)
69
70
#define VERBOSE_F() \
71
if (::onert::util::logging::ctx.enabled()) \
72
std::cout << ::onert::util::logging::decorated_name(__func__)
73
74
#define WHEN_LOG_ENABLED(METHOD) \
75
if (::onert::util::logging::ctx.enabled()) \
76
do \
77
{ \
78
METHOD; \
79
} while (0)
80
81
#define UPDATE_VERBOSE_CONFIG() ::onert::util::logging::ctx.update()
82
83
#define MEASURE_TIME_START(name) \
84
do \
85
{ \
86
auto beg_##name = std::chrono::steady_clock::now()
87
88
#define MEASURE_TIME_END(name) \
89
auto end_##name = std::chrono::steady_clock::now(); \
90
auto dur_##name = \
91
std::chrono::duration_cast<std::chrono::microseconds>(end_##name - beg_##name); \
92
if (::onert::util::logging::ctx.enabled()) \
93
std::cout << ::onert::util::logging::decorated_name(__func__) << #name \
94
<< " time = " << dur_##name.count() << std::endl; \
95
} \
96
while (0)
97
98
#endif
// __ONERT_UTIL_LOGGING_H__
ConfigSource.h
onert::util::logging::Context
Definition
logging.h:29
onert::util::logging::Context::get
static Context & get() noexcept
Definition
logging.cc:19
onert::util::logging::Context::Context
Context() noexcept
Definition
logging.h:31
onert::util::logging::Context::update
void update(void)
Definition
logging.h:45
onert::util::logging::Context::enabled
bool enabled(void) const
Definition
logging.h:44
onert::util::logging
Definition
logging.h:26
onert::util::logging::decorated_name
std::string decorated_name(const char *input)
Definition
logging.h:53
onert::util::getConfigBool
bool getConfigBool(const std::string &key)
Definition
ConfigSource.cc:118
runtime
onert
core
include
util
logging.h
Generated by
1.9.8