log.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
20 
21 #include <stdio.h>
22 #include <string.h>
23 
24 #include <grpc/support/alloc.h>
25 #include <grpc/support/atm.h>
26 #include <grpc/support/log.h>
27 
30 
31 #ifndef GPR_DEFAULT_LOG_VERBOSITY_STRING
32 #define GPR_DEFAULT_LOG_VERBOSITY_STRING "ERROR"
33 #endif // !GPR_DEFAULT_LOG_VERBOSITY_STRING
34 
37  "Default gRPC logging verbosity")
38 GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_stacktrace_minloglevel, "",
39  "Messages logged at the same or higher level "
40  "than this will print stacktrace")
41 
44 
46 static gpr_atm g_log_func = reinterpret_cast<gpr_atm>(gpr_default_log);
49 
50 void gpr_unreachable_code(const char* reason, const char* file, int line) {
51  gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "UNREACHABLE CODE: %s", reason);
52  abort();
53 }
54 
56  switch (severity) {
58  return "D";
60  return "I";
62  return "E";
63  }
64  GPR_UNREACHABLE_CODE(return "UNKNOWN");
65 }
66 
68  return static_cast<gpr_atm>(severity) >=
70  ? 1
71  : 0;
72 }
73 
75  return static_cast<gpr_atm>(severity) >=
77  ? 1
78  : 0;
79 }
80 
82  const char* message) {
83  if (gpr_should_log(severity) == 0) {
84  return;
85  }
86 
87  gpr_log_func_args lfargs;
88  memset(&lfargs, 0, sizeof(lfargs));
89  lfargs.file = file;
90  lfargs.line = line;
91  lfargs.severity = severity;
92  lfargs.message = message;
93  reinterpret_cast<gpr_log_func>(gpr_atm_no_barrier_load(&g_log_func))(&lfargs);
94 }
95 
96 void gpr_set_log_verbosity(gpr_log_severity min_severity_to_print) {
98  (gpr_atm)min_severity_to_print);
99 }
100 
101 static gpr_atm parse_log_severity(const char* str, gpr_atm error_value) {
102  if (gpr_stricmp(str, "DEBUG") == 0) {
103  return GPR_LOG_SEVERITY_DEBUG;
104  } else if (gpr_stricmp(str, "INFO") == 0) {
105  return GPR_LOG_SEVERITY_INFO;
106  } else if (gpr_stricmp(str, "ERROR") == 0) {
107  return GPR_LOG_SEVERITY_ERROR;
108  } else if (gpr_stricmp(str, "NONE") == 0) {
109  return GPR_LOG_SEVERITY_NONE;
110  } else {
111  return error_value;
112  }
113 }
114 
116  // init verbosity when it hasn't been set
121  gpr_atm min_severity_to_print = GPR_LOG_SEVERITY_ERROR;
122  if (strlen(verbosity.get()) > 0) {
123  min_severity_to_print =
124  parse_log_severity(verbosity.get(), min_severity_to_print);
125  }
126  gpr_atm_no_barrier_store(&g_min_severity_to_print, min_severity_to_print);
127  }
128  // init stacktrace_minloglevel when it hasn't been set
131  grpc_core::UniquePtr<char> stacktrace_minloglevel =
132  GPR_GLOBAL_CONFIG_GET(grpc_stacktrace_minloglevel);
133  gpr_atm min_severity_to_print_stacktrace = GPR_LOG_SEVERITY_NONE;
134  if (strlen(stacktrace_minloglevel.get()) > 0) {
135  min_severity_to_print_stacktrace = parse_log_severity(
136  stacktrace_minloglevel.get(), min_severity_to_print_stacktrace);
137  }
139  min_severity_to_print_stacktrace);
140  }
141 }
142 
145 }
xds_interop_client.str
str
Definition: xds_interop_client.py:487
GPR_LOG_SEVERITY_UNSET
Messages logged at the same or higher level than this will print static constexpr stacktrace gpr_atm GPR_LOG_SEVERITY_UNSET
Definition: log.cc:42
gpr_atm_no_barrier_load
#define gpr_atm_no_barrier_load(p)
Definition: impl/codegen/atm_gcc_atomic.h:53
log.h
gpr_atm_no_barrier_store
#define gpr_atm_no_barrier_store(p, value)
Definition: impl/codegen/atm_gcc_atomic.h:56
bloat_diff.severity
def severity
Definition: bloat_diff.py:143
const
#define const
Definition: bloaty/third_party/zlib/zconf.h:230
gpr_log_func
void(* gpr_log_func)(gpr_log_func_args *args)
Definition: include/grpc/impl/codegen/log.h:86
memset
return memset(p, 0, total)
file
const grpc_generator::File * file
Definition: python_private_generator.h:38
gpr_unreachable_code
void gpr_unreachable_code(const char *reason, const char *file, int line)
Definition: log.cc:50
GPR_GLOBAL_CONFIG_GET
#define GPR_GLOBAL_CONFIG_GET(name)
Definition: global_config_generic.h:24
g_min_severity_to_print
static gpr_atm g_min_severity_to_print
Definition: log.cc:47
string.h
GPR_GLOBAL_CONFIG_DEFINE_STRING
GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_verbosity, GPR_DEFAULT_LOG_VERBOSITY_STRING, "Default gRPC logging verbosity") GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_stacktrace_minloglevel
GPR_DEFAULT_LOG_VERBOSITY_STRING
#define GPR_DEFAULT_LOG_VERBOSITY_STRING
Definition: log.cc:32
gpr_set_log_verbosity
void gpr_set_log_verbosity(gpr_log_severity min_severity_to_print)
Definition: log.cc:96
file
Definition: bloaty/third_party/zlib/examples/gzappend.c:170
GPR_LOG_SEVERITY_DEBUG
@ GPR_LOG_SEVERITY_DEBUG
Definition: include/grpc/impl/codegen/log.h:46
message
char * message
Definition: libuv/docs/code/tty-gravity/main.c:12
gpr_log_func_args
Definition: include/grpc/impl/codegen/log.h:77
GPR_LOG_SEVERITY_INFO
@ GPR_LOG_SEVERITY_INFO
Definition: include/grpc/impl/codegen/log.h:47
gpr_log_severity
gpr_log_severity
Definition: include/grpc/impl/codegen/log.h:45
gpr_log_severity_string
const char * gpr_log_severity_string(gpr_log_severity severity)
Definition: log.cc:55
autogen_x86imm.f
f
Definition: autogen_x86imm.py:9
gpr_log_func_args::file
const char * file
Definition: include/grpc/impl/codegen/log.h:78
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
gpr_log
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
gpr_stricmp
int gpr_stricmp(const char *a, const char *b)
Definition: string.cc:282
GPR_LOG_SEVERITY_ERROR
@ GPR_LOG_SEVERITY_ERROR
Definition: include/grpc/impl/codegen/log.h:48
GPR_UNREACHABLE_CODE
#define GPR_UNREACHABLE_CODE(STATEMENT)
Definition: impl/codegen/port_platform.h:652
GPR_LOG_SEVERITY_NONE
static constexpr gpr_atm GPR_LOG_SEVERITY_NONE
Definition: log.cc:43
grpc_core::UniquePtr
std::unique_ptr< T, DefaultDeleteChar > UniquePtr
Definition: src/core/lib/gprpp/memory.h:43
gpr_atm
intptr_t gpr_atm
Definition: impl/codegen/atm_gcc_atomic.h:32
global_config.h
gpr_log_message
void gpr_log_message(const char *file, int line, gpr_log_severity severity, const char *message)
Definition: log.cc:81
parse_log_severity
static gpr_atm parse_log_severity(const char *str, gpr_atm error_value)
Definition: log.cc:101
gpr_log_func_args::line
int line
Definition: include/grpc/impl/codegen/log.h:79
gpr_log_func_args::message
const char * message
Definition: include/grpc/impl/codegen/log.h:81
gpr_default_log
void gpr_default_log(gpr_log_func_args *args)
alloc.h
regen-readme.line
line
Definition: regen-readme.py:30
gpr_should_log
int gpr_should_log(gpr_log_severity severity)
Definition: log.cc:67
gpr_log_verbosity_init
void gpr_log_verbosity_init()
Definition: log.cc:115
gpr_log_func_args::severity
gpr_log_severity severity
Definition: include/grpc/impl/codegen/log.h:80
g_log_func
static gpr_atm g_log_func
Definition: log.cc:46
atm.h
client.level
level
Definition: examples/python/async_streaming/client.py:118
g_min_severity_to_print_stacktrace
static gpr_atm g_min_severity_to_print_stacktrace
Definition: log.cc:48
gpr_should_log_stacktrace
int gpr_should_log_stacktrace(gpr_log_severity severity)
Definition: log.cc:74
_auth_example_test.verbosity
verbosity
Definition: _auth_example_test.py:69
grpc_verbosity
char * grpc_verbosity
Definition: php_grpc.h:79
gpr_set_log_function
void gpr_set_log_function(gpr_log_func f)
Definition: log.cc:143
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:29