logtail 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b733e09dc3c2fe5e34726a20e57f2b6b812077599aa8b90acee18387296b87d2
4
- data.tar.gz: 805f7124e4796e3ea453dd917f1d6abbcd1ef1844869d543bb884195329258f7
3
+ metadata.gz: 10c467039aa517fd668eb0b4f25a3bc0405331b9c422984b01e7effa7bfd1ceb
4
+ data.tar.gz: 2890f2588f6beb9671037e0521a3eb361e80937e0c475b4be2f2895e48422540
5
5
  SHA512:
6
- metadata.gz: 394455d1941c94c0a19e1c4a25486b0a9c67f14461be14a43cd65019d10ad274ffe7d5d1fc3614edaf6c2011394d515741ddd411e7674d1ef418f67342657ea6
7
- data.tar.gz: a4654f2d5dc978fe2c48c4223a1a439bae9a7e41c8ef74e15a9f76892dd43846d7994c6b5d999ac860f39b8e084750af7165f66af109fdb9efa4423e60196f47
6
+ metadata.gz: 81d0c6479082f302ff146cb321f9483c6b46a8d2fbf9133e1c661bc9694f5d8134447a2ec6d8ab7bfbc6ee36abc66fabe0777e113b199dc31642810fbfee7322
7
+ data.tar.gz: 161f16cd44e8522fe9c6e47b31773a2d422372ac082409d3afaec74ba249807af1a51512fcb1c151eb5541ad45cbbfc82d62eccde03231b25129abe0dfda232e
@@ -1,24 +1,28 @@
1
1
  name: build
2
2
 
3
- on: [push, pull_request]
3
+ on:
4
+ push:
5
+ schedule:
6
+ - cron: '20 5 * * 1'
7
+ workflow_dispatch:
4
8
 
5
9
  jobs:
6
10
  test:
7
-
8
11
  runs-on: ubuntu-20.04
9
12
 
10
13
  strategy:
14
+ fail-fast: false
15
+
11
16
  matrix:
12
17
  ruby-version:
13
- - 3.2.1
14
- - 3.1.2
15
- - 3.0.0
16
- - 2.7.2
17
- - 2.6.6
18
- - 2.5.8
19
- - 2.4.10
20
- - 2.3.8
21
- - 2.2.10
18
+ - 3.2
19
+ - 3.1
20
+ - 3.0
21
+ - 2.7
22
+ - 2.6
23
+ - 2.5
24
+ - 2.4
25
+ - 2.3
22
26
  - jruby-9.4.3.0
23
27
  - jruby-9.2.14.0
24
28
  - truffleruby-23.0.0
data/README.md CHANGED
@@ -1,69 +1,22 @@
1
- # Logtail - Ruby Logging Made Easy
2
-
3
- [![Logtail ruby dashboard](https://user-images.githubusercontent.com/19272921/154085622-59997d5a-3f91-4bc9-a815-3b8ead16d28d.jpeg)](https://betterstack.com/logtail)
1
+ # [Better Stack](https://betterstack.com/logs) Ruby client
4
2
 
5
- [![ISC License](https://img.shields.io/badge/license-ISC-ff69b4.svg)](LICENSE.md)
6
- [![Gem Version](https://badge.fury.io/rb/logtail-ruby.svg)](https://badge.fury.io/rb/logtail-ruby)
7
- [![Build Status](https://github.com/logtail/logtail-ruby/workflows/build/badge.svg)](https://github.com/logtail/logtail-ruby/actions?query=workflow%3Abuild)
8
-
9
- Collect logs directly from your Ruby projects. To start logging Ruby on Rails projects explore the [Logtail Rails library](https://github.com/logtail/logtail-ruby-rails).
10
-
11
- [Logtail](https://betterstack.com/logtail) is a hosted service that centralizes all of your logs into one place. Allowing for analysis, correlation and filtering with SQL. Actionable Grafana dashboards and collaboration come built-in. Logtail works with [any language or platform and any data source](https://docs.logtail.com/).
12
-
13
- ### Features
14
- - Simple integration.
15
- - Support for structured logging and events.
16
- - Automatically captures useful context.
17
- - Performant, light weight, with a thoughtful design.
18
-
19
- ### Supported language versions
20
- - Ruby 2.7.0 or newer
21
-
22
- # Installation
23
- Install the Logtail Ruby client library, run the following command:
24
-
25
- ```bash
26
- bundle add logtail
27
- ```
28
-
29
- This will install Logtail gem and create `Gemfile` and `Gemfile.lock` that are used to track the code dependencies.
3
+ 📣 Logtail is now part of Better Stack. [Learn more ⇗](https://betterstack.com/press/introducing-better-stack/)
30
4
 
31
- Alternatively, add `gem "logtail"` to your `Gemfile` manually and then run `bundle install`.
5
+ [![Better Stack dashboard](https://github.com/logtail/logtail-python/assets/10132717/e2a1196b-7924-4abc-9b85-055e17b5d499)](https://betterstack.com/logs)
32
6
 
33
- ---
34
-
35
- # Example project
36
-
37
- To help you get started with using Logtail in your Ruby projects, we have prepared a simple program that showcases the usage of Logtail logger.
38
-
39
- ## Download and install the example project
40
-
41
- You can download the [example project](https://github.com/logtail/logtail-ruby/tree/main/example-project) from GitHub directly or you can clone it to a select directory. Make sure you are in the projects directory and run the following command:
42
-
43
- ```bash
44
- bundle install
45
- ```
46
-
47
- This will install all dependencies listed in the `Gemfile.lock` file.
7
+ [![ISC License](https://img.shields.io/badge/license-ISC-ff69b4.svg)](LICENSE.md)
8
+ [![Gem Version](https://badge.fury.io/rb/logtail.svg)](https://badge.fury.io/rb/logtail)
9
+ [![Build Status](https://github.com/logtail/logtail-ruby/workflows/build/badge.svg)](https://github.com/logtail/logtail-ruby/actions?query=workflow%3Abuild)
48
10
 
49
- ## Run the example project
50
-
51
- To run the example application, run the following command:
11
+ Experience SQL-compatible structured log management based on ClickHouse. [Learn more ⇗](https://betterstack.com/logs)
52
12
 
53
- ```bash
54
- bundle exec ruby main.rb <source-token>
55
- ```
13
+ ## Documentation
56
14
 
57
- *Don't forget to replace `<source-token>` with your actual source token which you can find by going to logtail.com -> sources -> edit.*
15
+ [Getting started ⇗](https://betterstack.com/docs/logs/ruby-and-rails/#logging-from-ruby)
58
16
 
59
- This will create a total of 5 different logs, each corresponding to a different log level. You can review these logs in Logtail.
17
+ ## Need help?
18
+ Please let us know at [hello@betterstack.com](mailto:hello@betterstack.com). We're happy to help!
60
19
 
61
- ## Explore how example project works
62
-
63
- Learn how to setup Ruby logging by exploring the workings of the [example project](https://github.com/logtail/logtail-ruby/tree/main/example-project) in detail.
64
-
65
20
  ---
66
-
67
- ## Get in touch
68
21
 
69
- Have any questions? Please explore the Logtail [documentation](https://docs.logtail.com/) or contact our [support](https://betterstack.com/help).
22
+ [ISC license](https://github.com/logtail/logtail-ruby/blob/main/LICENSE.md), [example project](https://github.com/logtail/logtail-ruby/tree/main/example-project)
@@ -1,2 +1,2 @@
1
1
  source 'https://rubygems.org'
2
- gem "logtail"
2
+ gem "logtail", "~> 0.1.12"
@@ -1,9 +1,9 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- logtail (0.1.9)
4
+ logtail (0.1.12)
5
5
  msgpack (~> 1.0)
6
- msgpack (1.7.1)
6
+ msgpack (1.7.2)
7
7
 
8
8
  PLATFORMS
9
9
  ruby
@@ -15,6 +15,9 @@ end
15
15
  http_device = Logtail::LogDevices::HTTP.new(ARGV[0])
16
16
  logger = Logtail::Logger.new(http_device)
17
17
 
18
+ # Filter logs that shouldn't be sent to Better Stack, see {Logtail::LogEntry} for available attributes
19
+ Logtail.config.filter_sent_to_better_stack { |log_entry| log_entry.message.include?("DO_NOT_SEND") }
20
+
18
21
  # LOGGING
19
22
 
20
23
  # Send debug logs messages using the debug() method
@@ -33,6 +36,9 @@ logger.warn(
33
36
  }
34
37
  )
35
38
 
39
+ # Some messages can be filtered, see {Logtail::Config#filter_sent_to_better_stack} call above
40
+ logger.info("This message will not be sent to Better Stack because it contains 'DO_NOT_SEND'")
41
+
36
42
  # Send error messages using the error() method
37
43
  logger.error("Oops! An error occurred!")
38
44
 
@@ -32,6 +32,28 @@ module Logtail
32
32
 
33
33
  attr_writer :http_body_limit
34
34
 
35
+ # Whether a particular {Logtail::LogEntry} should be sent to Better Stack
36
+ def send_to_better_stack?(log_entry)
37
+ !@better_stack_filters&.any? { |blocker| blocker.call(log_entry) }
38
+ rescue => e
39
+ debug { "Could not determine whether to send LogEntry to Better Stack (assumed yes): #{e}" }
40
+ true
41
+ end
42
+
43
+ # This allows filtering logs that are sent to Better Stack. Can be called multiple times, all filters will
44
+ # be applied. If the passed block RETURNS TRUE for a particular LogEntry, it WILL NOT BE SENT to Better Stack.
45
+ #
46
+ # See {Logtail::LogEntry} for available attributes of the block parameter.
47
+ #
48
+ # @example Rails
49
+ # config.logtail.filter_sent_to_better_stack { |log_entry| log_entry.context_snapshot[:http][:path].start_with?('/_') }
50
+ # @example Everything else
51
+ # Logtail.config.filter_sent_to_better_stack { |log_entry| log_entry.message.include?('IGNORE') }
52
+ def filter_sent_to_better_stack(&block)
53
+ @better_stack_filters ||= []
54
+ @better_stack_filters << -> (log_entry) { yield(log_entry) }
55
+ end
56
+
35
57
  # Convenience method for logging debug statements to the debug logger
36
58
  # set in this class.
37
59
  # @private
@@ -89,6 +89,8 @@ module Logtail
89
89
  # size is constricted by the Logtail API. The actual application limit is a multiple
90
90
  # of this. Hence the `@request_queue`.
91
91
  def write(msg)
92
+ return unless Logtail.config.send_to_better_stack?(msg)
93
+
92
94
  @msg_queue.enq(msg)
93
95
 
94
96
  # Lazily start flush threads to ensure threads are alive after forking processes.
@@ -134,13 +134,13 @@ module Logtail
134
134
  end
135
135
 
136
136
  def logtail_logger_frame?(frame)
137
- !frame.absolute_path.nil? && frame.absolute_path.end_with?(LOGGER_FILE)
137
+ !frame.path.nil? && frame.path.end_with?(LOGGER_FILE)
138
138
  end
139
139
 
140
140
  def path_relative_to_app_root(frame)
141
141
  Pathname.new(frame.absolute_path).relative_path_from(root_path).to_s
142
142
  rescue
143
- frame.absolute_path
143
+ frame.absolute_path || frame.path
144
144
  end
145
145
 
146
146
  def root_path
@@ -1,3 +1,3 @@
1
1
  module Logtail
2
- VERSION = "0.1.11"
2
+ VERSION = "0.1.13"
3
3
  end
data/logtail.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.metadata["homepage_uri"] = spec.homepage
19
19
  spec.metadata["source_code_uri"] = spec.homepage
20
20
 
21
- spec.required_ruby_version = Gem::Requirement.new(">= 2.2.0")
21
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3")
22
22
 
23
23
  spec.files = `git ls-files`.split("\n")
24
24
  spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logtail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Better Stack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-04 00:00:00.000000000 Z
11
+ date: 2023-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -146,7 +146,6 @@ files:
146
146
  - ".github/workflows/main.yml"
147
147
  - ".gitignore"
148
148
  - ".rspec"
149
- - CHANGELOG.md
150
149
  - Gemfile
151
150
  - LICENSE.md
152
151
  - README.md
@@ -216,7 +215,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
216
215
  requirements:
217
216
  - - ">="
218
217
  - !ruby/object:Gem::Version
219
- version: 2.2.0
218
+ version: '2.3'
220
219
  required_rubygems_version: !ruby/object:Gem::Requirement
221
220
  requirements:
222
221
  - - ">="
data/CHANGELOG.md DELETED
@@ -1,28 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
- and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
-
8
- ## [Unreleased]
9
-
10
- ## [0.1.0] - 2021-02-11
11
-
12
- - The first version of the client.
13
-
14
- ## [0.1.2] - 2021-04-22
15
-
16
- - Fixed string encoding.
17
-
18
- ## [0.1.3] - 2021-06-11
19
-
20
- - Fixed detection of the frame that calls the logger.
21
-
22
- ## [0.1.7] - 2021-08-16
23
-
24
- - Fixed runtime context's frame label encoding.
25
-
26
- ## [0.1.8] - 2023-01-16
27
-
28
- - Fix issue where message is lost when logging hashes with multiple IO devices (thanks @olivier-thatch!)