Problem
You encounter problems sending data to New Relic with an application instrumented with the C SDK, but you are not sure what the cause is.
Solution
The New Relic C SDK and its daemon have their own logs:
- C SDK logs: These logs are generated due to errors in how you've instrumented your code using the New Relic C SDK API calls.
- Daemon logs: These are logs related to transmission of data to New Relic.
To help troubleshoot an issue, we recommend generating logs at their highest level:
- Set the C SDK log to
verbose
level and the daemon log todebug
level. - Run both logs for 5-10 minutes.
- After generating logs for troubleshooting, return logging for both the C SDK and daemon to their default levels.
Elevated logging levels can create large log files and have a performance impact. Generate logs at this level only as long as necessary for troubleshooting.
- C SDK logs
-
The C SDK has four log levels, as defined by the
enum _newrelic_loglevel_t
inlibnewrelic.h
. By default, logs are set toNEWRELIC_LOG_INFO
and output to standard error. Log levels include:NEWRELIC_LOG_ERROR NEWRELIC_LOG_WARNING NEWRELIC_LOG_INFO (default) NEWRELIC_LOG_DEBUG
To set a different log level for troubleshooting purposes: Call
newrelic_configure_log()
in your application code, and set a log level. For example:newrelic_configure_log("./c_sdk.log", NEWRELIC_LOG_INFO);
- Daemon logs
-
The C SDK daemon has four log levels. By default, logs are set to
info
and output to standard error. Log levels include:error warning info (default) debug
These log levels are invoked using flags from the command line:
--logfile <DAEMON_FILE_NAME>. Sets the path to the log file. --loglevel <LOG_LEVEL>. Sets the log level. Default: info.
To set a different log level for troubleshooting purposes: From the command line, set a different log level flag. For example:
./newrelic-daemon -f -logfile stdout -loglevel debug