Giter VIP home page Giter VIP logo

service_logging's Introduction

ServiceLogging

Build Status

Contains some common setup used around logging infrastructure in multiple Savedo applications.

Installation

Add these lines to your application's Gemfile:

gem "service_logging", git: "https://github.com/Savedo/service_logging" # specify `tag: "v0.4.0"` to use a specific version

And then execute:

$ bundle

Usage

To enable the gem, set up the enabled option either per environment or globally in your config/application.rb:

config.service_logging.enabled = true

Configuration

Custom payload parameters

To send custom data with payload add append_info_to_payload method to your controller:

class ApplicationController
  # ...
  # modify ActionController::Instrumentation method to add custom data to payload
  private def append_info_to_payload(payload)
    super
    payload[:customer_id] = current_customer&.id
  end
  # ...
end

and define parameter names in the configuration:

config.service_logging.custom_payload_params = %i(customer_id customer_email)

Logging json-api request and response

Call AppendInfoToPayload#execute inside of append_info_to_payload method:

private def append_info_to_payload(payload)
  super
  # ...
  ServiceLogging::AppendInfoToPayload.execute(payload, request, response)
end

Keep in mind that AppendInfoToPayload works only with JSON based request/response.

Filtering sensitive logs

You can set up filtering of json attributes in request/response by using JSONPath notation:

config.service_logging.filters = {
  request_filters: [
    "$..password",
  ],
  response_filters: [
    "$.data[?(@.type=='tokens')].id"
  ]
}

Additionally, you can also filter request and response:

config.service_logging.filters = {
  response_header_filters: ["Set-Cookie"],
  request_header_filters: %w(HTTP_COOKIE HTTP_AUTHORIZATION)
}

Set any Lograge config option

Do that via config.service_logging.lograge:

config.service_logging.lograge.ignore_actions = %w(HomeController#index)

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/Savedo/service_logging.

License

The gem is available as open source under the terms of the MIT License.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.