Module: NewRelic::Agent::MethodTracer::ClassMethods
- Includes:
- AddMethodTracer
- Included in:
- NewRelic::Agent::MethodTracer
- Defined in:
- lib/new_relic/agent/method_tracer.rb
Overview
Defines methods used at the class level, for adding instrumentation
Defined Under Namespace
Modules: AddMethodTracer
Constant Summary
Constants included from AddMethodTracer
AddMethodTracer::ALLOWED_KEYS, AddMethodTracer::DEFAULT_SETTINGS
Instance Method Summary collapse
-
#add_method_tracer(method_name, metric_name = nil, options = {}) ⇒ Object
Add a method tracer to the specified method.
-
#remove_method_tracer(method_name) ⇒ Object
For tests only because tracers must be removed in reverse-order from when they were added, or else other tracers that were added to the same method may get removed as well.
Methods included from AddMethodTracer
#_nr_clear_traced_methods!, #_nr_default_metric_name, #_nr_derived_class_name, #_nr_traced_method_module, #_nr_validate_method_tracer_options, #method_traced?, #newrelic_method_exists?
Instance Method Details
#add_method_tracer(method_name, metric_name = nil, options = {}) ⇒ Object
Add a method tracer to the specified method.
By default, this will cause invocations of the traced method to be recorded in transaction traces, and in a metric named after the class and method. It will also make the method show up in transaction-level breakdown charts and tables.
Overriding the metric name
metric_name
is a String or Proc. If a Proc is given, it is bound to the object that called the traced method. For example:
add_method_tracer :foo, -> { "Custom/#{self.class.name}/foo" }
This would name the metric according to the class of the runtime instance, as opposed to the class where foo
is defined.
If not provided, the metric name will be Custom/ClassName/method_name
.
246 247 248 |
# File 'lib/new_relic/agent/method_tracer.rb', line 246 def add_method_tracer(method_name, metric_name = nil, = {}) ::NewRelic::Agent.add_or_defer_method_tracer(self, method_name, metric_name, ) end |
#remove_method_tracer(method_name) ⇒ Object
For tests only because tracers must be removed in reverse-order from when they were added, or else other tracers that were added to the same method may get removed as well.
253 254 255 256 257 258 259 260 261 262 |
# File 'lib/new_relic/agent/method_tracer.rb', line 253 def remove_method_tracer(method_name) # :nodoc: return unless Agent.config[:agent_enabled] if _nr_traced_method_module.method_defined?(method_name) _nr_traced_method_module.send(:remove_method, method_name) ::NewRelic::Agent.logger.debug("removed method tracer #{method_name}\n") else raise "No tracer on method '#{method_name}'" end end |