<?php /** * DecaLog tracer definition. * * @package SDK * @author Pierre Lannoy <https://pierre.lannoy.fr/>. * @since 1.0.0 */ namespace DecaLog; /** * DecaLog tracer class. * * This class defines all code necessary to trace with DecaLog. * If DecaLog is not installed, it will do nothing and will not throw errors. * * @package SDK * @author Pierre Lannoy <https://pierre.lannoy.fr/>. * @since 1.0.0 */ class TracesLogger { /** * The "true" DTracer instance. * * @since 1.0.0 * @var \Decalog\Plugin\Feature\DTracer $tracer Maintains the internal DTracer instance. */ private $tracer = null; /** * Initialize the class and set its properties. * * @param string $class The class identifier, must be a value in ['plugin', 'theme', 'library']. * @param string $name Optional. The name of the component that will trigger events. * @param string $version Optional. The version of the component that will trigger events. * @since 1.0.0 */ public function __construct( $class, $name = null, $version = null ) { if ( class_exists( '\Decalog\Plugin\Feature\DTracer' ) ) { $this->tracer = new \Decalog\Plugin\Feature\DTracer( $class, $name, $version ); } } /** * Starts a span. * * @param string $name The name of the span. * @param string $parent_id Optional. The id of the parent. If none, it will be linked to WP root id. * @return string Id of started span. * @since 1.0.0 */ public function startSpan( $name, $parent_id = 'xxx' ) { if ( $this->tracer ) { return $this->tracer->start_span( $name, $parent_id ); } return 'xxx'; } /** * Ends a span. * * @param string $id The id of the span. * @since 1.0.0 */ public function endSpan( $id ) { if ( $this->tracer ) { $this->tracer->end_span( $id ); } } }