Files
test2/intern/cycles/util/log.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

85 lines
1.8 KiB
C++
Raw Normal View History

/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "util/log.h"
#include "util/math.h"
#include "util/string.h"
#include <cstdio>
#ifdef _MSC_VER
# define snprintf _snprintf
#endif
CCL_NAMESPACE_BEGIN
#ifdef WITH_CYCLES_LOGGING
static bool is_verbosity_set()
{
2019-07-07 23:45:35 +10:00
using CYCLES_GFLAGS_NAMESPACE::GetCommandLineOption;
string verbosity;
if (!GetCommandLineOption("v", &verbosity)) {
return false;
}
return verbosity != "0";
}
#endif
void util_logging_init(const char *argv0)
{
#ifdef WITH_CYCLES_LOGGING
using CYCLES_GFLAGS_NAMESPACE::SetCommandLineOption;
google::InitGoogleLogging(argv0);
SetCommandLineOption("logtostderr", "1");
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");
#else
(void)argv0;
#endif
}
void util_logging_start()
{
#ifdef WITH_CYCLES_LOGGING
using CYCLES_GFLAGS_NAMESPACE::SetCommandLineOption;
SetCommandLineOption("logtostderr", "1");
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");
SetCommandLineOption("minloglevel", "0");
#endif
}
void util_logging_verbosity_set(const int verbosity)
{
#ifdef WITH_CYCLES_LOGGING
using CYCLES_GFLAGS_NAMESPACE::SetCommandLineOption;
char val[10];
snprintf(val, sizeof(val), "%d", verbosity);
SetCommandLineOption("v", val);
#else
(void)verbosity;
#endif
}
std::ostream &operator<<(std::ostream &os, const int2 &value)
{
os << "(" << value.x << ", " << value.y << ")";
return os;
}
std::ostream &operator<<(std::ostream &os, const float3 &value)
{
os << "(" << value.x << ", " << value.y << ", " << value.z << ")";
return os;
}
CCL_NAMESPACE_END