2023-06-14 16:52:36 +10:00
|
|
|
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0 */
|
2014-09-08 18:01:24 +06:00
|
|
|
|
2021-10-24 14:19:19 +02:00
|
|
|
#include "util/log.h"
|
2014-09-08 18:01:24 +06:00
|
|
|
|
2021-10-24 14:19:19 +02:00
|
|
|
#include "util/math.h"
|
|
|
|
|
#include "util/string.h"
|
2014-09-08 18:01:24 +06:00
|
|
|
|
2024-12-26 17:53:59 +01:00
|
|
|
#include <cstdio>
|
2014-11-16 01:12:19 +05:00
|
|
|
#ifdef _MSC_VER
|
|
|
|
|
# define snprintf _snprintf
|
|
|
|
|
#endif
|
|
|
|
|
|
2014-09-08 18:01:24 +06:00
|
|
|
CCL_NAMESPACE_BEGIN
|
|
|
|
|
|
2021-07-29 14:27:26 +02:00
|
|
|
#ifdef WITH_CYCLES_LOGGING
|
2019-06-28 15:42:58 +02:00
|
|
|
static bool is_verbosity_set()
|
|
|
|
|
{
|
2019-07-07 23:45:35 +10:00
|
|
|
using CYCLES_GFLAGS_NAMESPACE::GetCommandLineOption;
|
2019-06-28 15:42:58 +02:00
|
|
|
|
2024-12-26 17:53:59 +01:00
|
|
|
string verbosity;
|
2019-06-28 15:42:58 +02:00
|
|
|
if (!GetCommandLineOption("v", &verbosity)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return verbosity != "0";
|
|
|
|
|
}
|
2021-07-29 14:27:26 +02:00
|
|
|
#endif
|
2019-06-28 15:42:58 +02:00
|
|
|
|
2014-11-16 01:12:19 +05:00
|
|
|
void util_logging_init(const char *argv0)
|
|
|
|
|
{
|
|
|
|
|
#ifdef WITH_CYCLES_LOGGING
|
2014-12-12 16:01:30 +05:00
|
|
|
using CYCLES_GFLAGS_NAMESPACE::SetCommandLineOption;
|
|
|
|
|
|
2014-11-16 01:12:19 +05:00
|
|
|
google::InitGoogleLogging(argv0);
|
2014-12-12 16:01:30 +05:00
|
|
|
SetCommandLineOption("logtostderr", "1");
|
2019-06-28 15:42:58 +02:00
|
|
|
if (!is_verbosity_set()) {
|
|
|
|
|
SetCommandLineOption("v", "0");
|
|
|
|
|
}
|
GLog: Lower default logging severity to INFO
Before this change messages of ERROR and above were printed.
This change makes it so LOG(INFO), LOG(WARNING), LOG(ERROR)
and LOG(FATAL) will be printed to the console by default
(without --debug-libmv and --debug-cycles).
On a user level nothing is changed because neither INFO nor
WARNING severity are used in our codebase. For developers this
change allows to use LOG(INFO) to print relevant for debugging
information. Bering able to see WARNING messages is also nice,
since those are not related to debugging, but are about some
detected "bad" state.
After this change the LOG(INFO) is really treated as a printf.
Why not to use printf to begin with? Because it is often more
annoying to print non-scalar types. Why not to use cout? Just
a convenience, so that all type of logging is handled in the
same way. When one is familiar with Glog used in the area, it
is easy to use same utilities during development. Also, it is
easy to change LOG(INFO) to VLOG(2) when development is done
and one wants to keep the log print but make it only appear
when using special verbosity flags.
The initial reason why default severity was set to maximum
possible value is because of misuse of VLOG with verbosity
level 0, which is the same as LOG(INFO). This is also why
back in the days --debug-libmv was introduced.
Now there is some redundancy between --debug-libmv, --debug-cyles
and --verbose, but changes in their meaning will cause user
level side effects.
Differential Revision: https://developer.blender.org/D10513
2021-02-23 16:37:55 +01:00
|
|
|
SetCommandLineOption("stderrthreshold", "0");
|
|
|
|
|
SetCommandLineOption("minloglevel", "0");
|
2014-11-16 01:12:19 +05:00
|
|
|
#else
|
|
|
|
|
(void)argv0;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
2018-11-09 12:01:38 +01:00
|
|
|
void util_logging_start()
|
2014-11-16 01:12:19 +05:00
|
|
|
{
|
|
|
|
|
#ifdef WITH_CYCLES_LOGGING
|
2014-12-12 16:01:30 +05:00
|
|
|
using CYCLES_GFLAGS_NAMESPACE::SetCommandLineOption;
|
|
|
|
|
SetCommandLineOption("logtostderr", "1");
|
2019-06-28 15:42:58 +02:00
|
|
|
if (!is_verbosity_set()) {
|
|
|
|
|
SetCommandLineOption("v", "2");
|
|
|
|
|
}
|
GLog: Lower default logging severity to INFO
Before this change messages of ERROR and above were printed.
This change makes it so LOG(INFO), LOG(WARNING), LOG(ERROR)
and LOG(FATAL) will be printed to the console by default
(without --debug-libmv and --debug-cycles).
On a user level nothing is changed because neither INFO nor
WARNING severity are used in our codebase. For developers this
change allows to use LOG(INFO) to print relevant for debugging
information. Bering able to see WARNING messages is also nice,
since those are not related to debugging, but are about some
detected "bad" state.
After this change the LOG(INFO) is really treated as a printf.
Why not to use printf to begin with? Because it is often more
annoying to print non-scalar types. Why not to use cout? Just
a convenience, so that all type of logging is handled in the
same way. When one is familiar with Glog used in the area, it
is easy to use same utilities during development. Also, it is
easy to change LOG(INFO) to VLOG(2) when development is done
and one wants to keep the log print but make it only appear
when using special verbosity flags.
The initial reason why default severity was set to maximum
possible value is because of misuse of VLOG with verbosity
level 0, which is the same as LOG(INFO). This is also why
back in the days --debug-libmv was introduced.
Now there is some redundancy between --debug-libmv, --debug-cyles
and --verbose, but changes in their meaning will cause user
level side effects.
Differential Revision: https://developer.blender.org/D10513
2021-02-23 16:37:55 +01:00
|
|
|
SetCommandLineOption("stderrthreshold", "0");
|
2014-12-12 16:01:30 +05:00
|
|
|
SetCommandLineOption("minloglevel", "0");
|
2014-11-16 01:12:19 +05:00
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-01 18:15:54 +01:00
|
|
|
void util_logging_verbosity_set(const int verbosity)
|
2014-11-16 01:12:19 +05:00
|
|
|
{
|
|
|
|
|
#ifdef WITH_CYCLES_LOGGING
|
2014-12-12 16:01:30 +05:00
|
|
|
using CYCLES_GFLAGS_NAMESPACE::SetCommandLineOption;
|
2014-11-16 01:12:19 +05:00
|
|
|
char val[10];
|
|
|
|
|
snprintf(val, sizeof(val), "%d", verbosity);
|
2014-12-12 16:01:30 +05:00
|
|
|
SetCommandLineOption("v", val);
|
2014-11-16 01:12:19 +05:00
|
|
|
#else
|
|
|
|
|
(void)verbosity;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
2017-02-20 13:02:11 +01:00
|
|
|
std::ostream &operator<<(std::ostream &os, const int2 &value)
|
|
|
|
|
{
|
|
|
|
|
os << "(" << value.x << ", " << value.y << ")";
|
|
|
|
|
return os;
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-08 18:01:24 +06:00
|
|
|
std::ostream &operator<<(std::ostream &os, const float3 &value)
|
|
|
|
|
{
|
|
|
|
|
os << "(" << value.x << ", " << value.y << ", " << value.z << ")";
|
|
|
|
|
return os;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CCL_NAMESPACE_END
|