Skip to content
Snippets Groups Projects

nexus_semantic_logger

Configures a semantic_logger as required for NexusMods components.

Telemetry

As well as providing a semantic logger, this gem handles datadog telemetry associated with the logging approach:

  • logs
  • traces
  • metrics
    • statsd is automatically attached to datadog runtime metrics and may also be used for custom metrics.

Sending metrics

Ensure the metric name is in the format: nexus.{component}.{major}.{minor}

Where major and minor are specific to the component logic e.g. nexus.uploads.clamscan.pass

For example, to increment a count:

NexusSemanticLogger.metrics.increment('nexus.users.registration.complete')

Local gem development

Steps to run this gem from local sources in one the nexus 'staged build' rails components:

Copy gem sources to component

cd ~/legacy/users
cp -r ../nexus_semantic_logger .

Adjust component Dockerfile to include gem sources

Within stage 1, append a COPY after the Gemfile copy:

COPY --chown=nexus:nexus Gemfile* ./
COPY --chown=nexus:nexus nexus_semantic_logger/ ./nexus_semantic_logger/

Within stage 2, append a COPY after the bundle copy:

COPY --from=stage1 /usr/local/bundle /usr/local/bundle
COPY --from=stage1 /app/nexus_semantic_logger/ /app/nexus_semantic_logger/

Adjust Gemfile to use local path

gem 'nexus_semantic_logger', :path => "/app/nexus_semantic_logger"