CARVIEW |
Select Language
HTTP/2 200
date: Thu, 31 Jul 2025 09:44:17 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-robots-tag: none
etag: W/"fcc0fc545bcf62699bf335929e77d4f3"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=YSukS9NMfk%2BT7cpAYMJFi2%2F5YhhuWBufatQ6s8jIgPkj2M1Py4O%2FzXRjkhWXsuiVbjbaD0JuBdVZoN9Y4RWFKYtGLDSwVVMI7mQVSX%2Bxs4d4bDMgZjDDSpq6PfsIC17ctBsNe8WhMDq1h6VrBOmZvhnt0%2Bw0oqv%2F8Ds7URJX14AUJMyx1t%2BE0Wc1QLyBQCDABeo6bZ6dAJEL6a65XEW41rwNvKFea2GMTHJvErTs8t2RMzimrn7sneTcI1ou9NnwP5EEgezUGWA7DTqLXlNmqg%3D%3D--9v%2Fo6OYleyQ630X4--WIkmx0pOpWpoHbe99DPqEg%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.13697596.1753955057; Path=/; Domain=github.com; Expires=Fri, 31 Jul 2026 09:44:17 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Fri, 31 Jul 2026 09:44:17 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: C76C:1E1938:7443FC:8D8664:688B3AF1
Use as Rails logger · tilfin/ougai Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 25
Use as Rails logger
Toshimitsu Takahashi edited this page Jan 25, 2022
·
4 revisions
Add following code to lib/your_app/logger.rb
A custom logger includes LoggerSilence because Rails logger must support silence
feature.
module YourApp
class Logger < Ougai::Logger
include ActiveSupport::LoggerThreadSafeLevel
include LoggerSilence
def initialize(*args)
super
after_initialize if respond_to?(:after_initialize) && ActiveSupport::VERSION::MAJOR < 6
end
def create_formatter
if Rails.env.development? || Rails.env.test?
Ougai::Formatters::Readable.new
else
Ougai::Formatters::Bunyan.new
end
end
end
end
Add following code to config/environments/development.rb
Rails.application.configure do
...
config.logger = YourApp::Logger.new(STDOUT)
end
Add following code to the end block of config/environments/production.rb
Rails.application.configure do
...
if ENV["RAILS_LOG_TO_STDOUT"].present?
config.logger = YourApp::Logger.new(STDOUT)
else
config.logger = YourApp::Logger.new(config.paths['log'].first)
end
end
You must modify lograge formatter like Raw.
The following code set request data to request
field of JSON.
Rails.application.configure do
config.lograge.enabled = true
config.lograge.formatter = Class.new do |fmt|
def fmt.call(data)
{ msg: 'Request', request: data }
end
end
end
If you modify application_controller.rb
as
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
def hello
logger.debug 'Call action', somefield: 'somevalue'
render plain: 'Hello!'
end
end
logger outputs following:
[2016-11-03T15:11:24.847+09:00] DEBUG: Call action
{
:somefield => "somevalue"
}
[2016-11-03T15:11:24.872+09:00] INFO: Request
{
:request => {
:method => "GET",
:path => "/",
:format => :html,
:controller => "ApplicationController",
:action => "hello",
:status => 200,
:duration => 30.14,
:view => 3.35,
:db => 0.0
}
}
Apply the monkey patch as below and embed the tags as a field on output
Rails.application.configure do
...
module ActiveSupport::TaggedLogging::Formatter
def call(severity, time, progname, data)
data = { msg: data.to_s } unless data.is_a?(Hash)
tags = current_tags
data[:tags] = tags if tags.present?
_call(severity, time, progname, data)
end
end
config.logger = ActiveSupport::TaggedLogging.new(YourApp::Logger.new(STDOUT))
end
Clone this wiki locally
You can’t perform that action at this time.