Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
5d66d17
Describe the SemanticLogger classes as they work
ndbroadbent Oct 17, 2026
672b622
Write the logger's tags and named tags in each line
ndbroadbent Oct 17, 2026
296598a
Filter and scrub what the filtering docs promised
ndbroadbent Oct 17, 2026
34bb288
Apply the logger settings from config/initializers
ndbroadbent Oct 17, 2026
219c367
Give mailers LogStruct's error handlers where LogStruct is off
ndbroadbent Oct 17, 2026
58c4313
Add the fields a lograge_custom_options proc returns
ndbroadbent Oct 17, 2026
46f4d0b
Say that enable_semantic_logger has no effect, and leave it out of th…
ndbroadbent Oct 17, 2026
fee3f80
Give the Puma tests 30 seconds to boot a server on a busy machine
ndbroadbent Oct 17, 2026
b1f7a42
Require Ruby 3.3, the oldest version CI tests
ndbroadbent Oct 17, 2026
e2a7daa
Scrub US phone numbers in parentheses and with dots, dashed MACs and …
ndbroadbent Oct 17, 2026
7a6a7e4
Describe filter summaries, key matching and process detection as they…
ndbroadbent Oct 17, 2026
035cef6
Keep mailers' logger, and detach Rails' mail log lines instead
ndbroadbent Oct 17, 2026
0fb9ee3
Say why the Rails tests set CI
ndbroadbent Oct 17, 2026
4ef0133
Log the client's IP and the host on request lines, as Rails' own requ…
ndbroadbent Oct 17, 2026
a750f2a
Remove the Sorbet handler that was installed and then replaced, and t…
ndbroadbent Oct 17, 2026
3af1c21
Test that config.log_tags tags reach a request's lines
ndbroadbent Oct 17, 2026
53499a4
Keep the appenders an app adds, and write each line once to other log…
ndbroadbent Oct 17, 2026
af6cb92
Send log.logstruct notifications after the line is written
ndbroadbent Oct 17, 2026
6d8146a
Log ActiveJob retries, discards, failed enqueues and perform_all_later
ndbroadbent Oct 17, 2026
135bc9b
Log ActiveStorage deletes by prefix, and remove the stream line
ndbroadbent Oct 17, 2026
13208a5
Log what Shrine's events report
ndbroadbent Oct 17, 2026
aea0403
Log CarrierWave uploads, downloads and deletes, and only those
ndbroadbent Oct 17, 2026
77824c4
Say who a failed mail was for, and stop promising a retry
ndbroadbent Oct 17, 2026
ee068fe
List the hosts Rails blocked on blocked host lines
ndbroadbent Oct 17, 2026
71ce7c8
Log an error the app didn't handle as one structured line
ndbroadbent Oct 17, 2026
11d4337
Leave out Sidekiq's job context when it's empty
ndbroadbent Oct 17, 2026
3ad3d75
Write times with milliseconds, and cut backtraces at max_backtrace_lines
ndbroadbent Oct 17, 2026
82b1b9f
Give Sorbet type errors a backtrace from the call that failed
ndbroadbent Oct 17, 2026
d46b26f
Scrub phone numbers with a leading 1 and IPv6 zones, and filter SQL b…
ndbroadbent Oct 17, 2026
7f92e6c
Run the site's browser tests in CI, install the integration gems ther…
ndbroadbent Oct 17, 2026
ee6743f
Release by pushing a tag from main, and stop tagging on commit
ndbroadbent Oct 17, 2026
734d33d
Make the site's example lines match the gem's lines
ndbroadbent Oct 17, 2026
115ded4
Read the supported versions from the gemspec, the Gemfile and CI
ndbroadbent Oct 17, 2026
bba86a5
Correct the docs, and add pages for each integration, log fields, upg…
ndbroadbent Oct 17, 2026
0d0fc0f
Update the changelog and rewrite the README for 0.2.0
ndbroadbent Oct 17, 2026
4fbbb68
Scrub a URL password that a cut string separates from its host
ndbroadbent Oct 17, 2026
98407a4
Leave uploaded files' names out of Shrine and ActiveStorage lines
ndbroadbent Oct 17, 2026
5e835e8
Log perform_all_later on adapters that report only how many jobs they…
ndbroadbent Oct 17, 2026
504233b
Check the release tag against version.rb before every release job
ndbroadbent Oct 17, 2026
f9d1bed
Give the unhandled error line typed status and cause fields
ndbroadbent Oct 17, 2026
5a6b348
Write an unhandled error's trace as strings without a backtrace cleaner
ndbroadbent Oct 17, 2026
5b47326
Leave out the noisy loggers' lines with filter_noisy_loggers, not eve…
ndbroadbent Oct 17, 2026
80cee5b
Filter colored lines' named tags as JSON lines filter ctx
ndbroadbent Oct 17, 2026
50d3276
Build path matchers' root only when a matcher reads it
ndbroadbent Oct 17, 2026
010e21f
Say log.logstruct subscribers run after the line is queued, not written
ndbroadbent Oct 17, 2026
ce0189b
Remove T.must from production code and type-check the CarrierWave tests
ndbroadbent Oct 17, 2026
536e38f
Make log_and_report_error report and never raise, as its name says
ndbroadbent Oct 17, 2026
94f0015
Remove config.integrations.enable_semantic_logger
ndbroadbent Oct 17, 2026
20395e8
Log the error when perform_all_later's adapter raises, not a count of…
ndbroadbent Oct 17, 2026
acb072b
Replace the rest of a cut URL password with an @ in it, and cut Basic…
ndbroadbent Oct 17, 2026
64e2486
Take the file names out of a Content-Disposition in Shrine's upload o…
ndbroadbent Oct 17, 2026
8c58150
Log an error reporter's own error instead of letting it replace the r…
ndbroadbent Oct 17, 2026
e83a907
Replace only the value the scrubbers saw part of at a long string's cut
ndbroadbent Oct 17, 2026
bf47154
Keep a refused job's error when perform_all_later raises, and name th…
ndbroadbent Oct 17, 2026
383850b
Detach Rails' log subscribers on Rails 8.2
ndbroadbent Oct 17, 2026
ae56b39
Detach Rails 8.2's request lines when lograge is on
ndbroadbent Oct 17, 2026
f8919d1
Test URL passwords at the cut in one test, with and without an @ of t…
ndbroadbent Oct 17, 2026
32614fe
Update the GitHub Actions that ran on Node 20
ndbroadbent Oct 17, 2026
6d46d52
Log the size of a request body Rails can't parse, not the body
ndbroadbent Oct 17, 2026
c2c29c5
Leave earlier Rails versions' request log subscribers to lograge
ndbroadbent Oct 17, 2026
3f1ab53
Leave the input a params parser quotes out of error lines
ndbroadbent Oct 17, 2026
5a4d578
Leave a parser's quote out of lines for params errors the app logs it…
ndbroadbent Oct 17, 2026
e3b4fbe
Leave a parser's quote out of Rails.logger's exception lines
ndbroadbent Oct 17, 2026
fe82568
Keep the class name of a params error raised without a message in col…
ndbroadbent Oct 17, 2026
fbe721d
Release 0.2.0
ndbroadbent Oct 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
"node_modules/**"
],
"overrides": [],
"ignoreRegExpList": [],
"ignoreRegExpList": [
"/\\b[A-Za-z]+'[A-Za-z]+\\b/g",
"/\\\\e\\[[0-9;]*m/g"
],
"useGitignore": true,
"dictionaryDefinitions": [
{
Expand All @@ -23,7 +26,6 @@
],
"dictionaries": [
"project-words",
"lockfile-words-root",
"lockfile-words-docs"
"lockfile-words-root"
]
}
32 changes: 20 additions & 12 deletions .cspell/project-words.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
activemodelserializers
ankane
apikey
apikeys
appender
appenders
autorun
Expand All @@ -7,51 +10,62 @@ binstub
binstubs
Bugsnag
bytesize
byteslice
carrierwave
codegen
creds
crypted
dalli
defn
demodulize
docspring
dotenv
duplicable
Dotenv
ESRCH
Fanout
favicons
FFFD
gettime
goodjob
gosu
Healthcheck
HMAC
Honeybadger
hostnames
hotwire
hrefs
instrumenter
Itest
ivar
justinko
jwts
kamal
klass
kwargs
langalex
lightningcss
lockfiles
logcraft
logdev
logfield
logstasher
Logstop
LogStruct
Luhn
metaprogramming
mswin
nilability
nilable
nonblock
nonblocking
optparse
otps
parseable
passw
pentester
pentesters
popen
Procfile
procs
progname
railtie
Expand All @@ -62,29 +76,23 @@ reraise
reraises
reraising
Rescuable
Resque
resultset
Rollbar
rsig
RUBYGEMS
shadcn
shiki
Sidekiq
signm
SIGUSR
solargraph
ssns
TESTOPTS
testtask
tsort
unwritable
vercel
wordlists
xorshift
yardoc
tsort
HMAC
otps
crypted
jwts
Luhn
byteslice
unwritable
FFFD
signm
SIGUSR
12 changes: 6 additions & 6 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
echo "sha=${run#* }" >> "$GITHUB_OUTPUT"

- name: Checkout the commit that CI run tested
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ steps.ci_run.outputs.sha }}
persist-credentials: false
Expand All @@ -59,7 +59,7 @@ jobs:
version: 10.18.3

- name: Setup Node with the pnpm cache
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: '22'
cache: 'pnpm'
Expand All @@ -70,12 +70,12 @@ jobs:
cd docs && pnpm install --frozen-lockfile

- name: Setup Pages
uses: actions/configure-pages@1f0c5cde4bc74cd7e1254d0cb4de8d49e9068c7d # v4.0.0
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
with:
static_docs_generator: next

- name: Download that run's coverage report
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
name: coverage-ruby-rails-latest
path: docs/public/coverage/
Expand All @@ -94,7 +94,7 @@ jobs:
run: cd docs && pnpm run build

- name: Upload artifact
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
path: ./docs/out

Expand All @@ -113,4 +113,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5
uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
2 changes: 1 addition & 1 deletion .github/workflows/rails-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
env:
RUBY_VERSION: '4.0.1'
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

Expand Down
66 changes: 39 additions & 27 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,43 @@ env:
TAG_NAME: ${{ github.ref_type == 'tag' && github.ref_name || '' }}

jobs:
# Every other job needs this one, so a tag that doesn't match version.rb publishes nothing
wait_ci:
name: Wait for CI success on tag
name: Validate the tag and wait for CI success
runs-on: ubuntu-latest
permissions:
contents: read
actions: read # to read the CI runs for the tagged commit
outputs:
version: ${{ steps.ver.outputs.version_tag }}
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Determine version and validate tag
id: ver
shell: bash
run: |
TAG="$TAG_NAME"
if [[ -z "$TAG" ]]; then
TAG="v0.0.0-dryrun"
echo "DRY-RUN: Using placeholder tag $TAG" >&2
fi
VERSION_FROM_TAG="${TAG#v}"
VERSION_RB=$(sed -n 's/^ *VERSION *= *"\([^"]*\)".*/\1/p' lib/log_struct/version.rb)
echo "version_tag=$VERSION_FROM_TAG" >> "$GITHUB_OUTPUT"
echo "Resolved tag: $TAG (version $VERSION_FROM_TAG); code version: $VERSION_RB"
if [[ -z "$VERSION_RB" ]]; then
echo "::error::Couldn't read VERSION from lib/log_struct/version.rb."
exit 1
fi
if [[ "$DRY_RUN" != "true" && "$VERSION_FROM_TAG" != "$VERSION_RB" ]]; then
echo "::error::Tag version ($VERSION_FROM_TAG) does not match lib/log_struct/version.rb ($VERSION_RB). Update version.rb before tagging, or run as dry-run."
exit 1
fi

- name: Wait for CI workflow
env:
GH_TOKEN: ${{ github.token }}
Expand Down Expand Up @@ -76,7 +106,7 @@ jobs:
gem_file: ${{ steps.build.outputs.gem_file }}
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
persist-credentials: false
Expand All @@ -87,28 +117,10 @@ jobs:
with:
ruby-version: '.ruby-version'

- name: Determine version and validate tag
id: ver
shell: bash
run: |
TAG="$TAG_NAME"
if [[ -z "$TAG" ]]; then
TAG="v0.0.0-dryrun"
echo "DRY-RUN: Using placeholder tag $TAG" >&2
fi
VERSION_FROM_TAG="${TAG#v}"
VERSION_RB=$(ruby -e 'print File.read("lib/log_struct/version.rb")[/VERSION\s*=\s*"([^"]+)"/,1]')
echo "version_tag=$VERSION_FROM_TAG" >> "$GITHUB_OUTPUT"
echo "Resolved tag: $TAG (version $VERSION_FROM_TAG); code version: $VERSION_RB"
if [[ "$DRY_RUN" != "true" && "$VERSION_FROM_TAG" != "$VERSION_RB" ]]; then
echo "::error::Tag version ($VERSION_FROM_TAG) does not match lib/log_struct/version.rb ($VERSION_RB). Update version.rb before tagging, or run as dry-run."
exit 1
fi

- name: Build gem
id: build
env:
VERSION: ${{ steps.ver.outputs.version_tag }}
VERSION: ${{ needs.wait_ci.outputs.version }}
run: |
gem build logstruct.gemspec
ls -la ./*.gem
Expand All @@ -129,7 +141,7 @@ jobs:
echo "gem_file=$GEM_FILE" >> "$GITHUB_OUTPUT"

- name: Upload the gem
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: gem
path: ${{ steps.build.outputs.gem_file }}
Expand All @@ -153,7 +165,7 @@ jobs:
id-token: write # RubyGems trusted publishing: exchanges this job's OIDC token for a short-lived API key
steps:
- name: Download the gem
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
name: gem

Expand All @@ -176,7 +188,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
persist-credentials: false
Expand All @@ -203,7 +215,7 @@ jobs:
run: ruby scripts/export_provider_catalog.rb

- name: Setup Go
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5.6.0
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version: '1.22'
cache: false
Expand All @@ -229,7 +241,7 @@ jobs:
fi

- name: Upload the provider changes
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: provider-changes
path: provider-changes.patch
Expand All @@ -244,7 +256,7 @@ jobs:
environment: release
steps:
- name: Download the provider changes
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
name: provider-changes

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/terraform-example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,19 @@ jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
uses: hashicorp/setup-terraform@dfe3c3f87815947d99a8997f908cb6525fc44e9e # v4.0.1
with:
terraform_version: 1.7.5
- name: Terraform Init (example)
run: terraform -chdir=terraform-example init -backend=false
- name: Terraform Validate (example)
run: terraform -chdir=terraform-example validate
- name: Setup TFLint
uses: terraform-linters/setup-tflint@90f302c255ef959cbfb4bd10581afecdb7ece3e6 # v4.1.1
uses: terraform-linters/setup-tflint@6ffdbaa3be476b3431f7275c26966ef32ff60337 # v6.3.2
- name: TFLint (core rules only)
run: |
# TFLint >= 0.47 removed positional directory args; use --chdir
Expand Down
Loading
Loading