From: Eric Wong <e@80x24.org>
To: Cenon Del Rosario <cdelrosario@publishing.nine.com.au>
Cc: unicorn-public@yhbt.net
Subject: Re: Formatting unicorn logs in json format for $stderr
Date: Tue, 6 Jul 2021 10:41:24 +0000 [thread overview]
Message-ID: <20210706104124.GA438@dcvr> (raw)
In-Reply-To: <CAKZvEvJ2aYd=aZ-tY8JOUMTGbLJ2PDfMZULCFkJi9_7FdLeZ7A@mail.gmail.com>
Cenon Del Rosario <cdelrosario@publishing.nine.com.au> wrote:
> Hi,
>
> I am using rails 3.2.22 / ruby 2.1.8 and am trying to reformat the
> unicorn log output from stderr into json format and have had partial
> success.
>
> I have a basic json formatter:
> class JsonLogFormatter < Logger::Formatter
> def call(severity, datetime, progname, msg)
> log_msg = {
> time: "#{datetime}",
> severity: "#{severity}",
> source: "#{progname}"
> }
> msg.is_a?(Hash) ? log_msg.merge!(msg) : log_msg.merge!(message: "#{msg}")
> "#{log_msg.to_json}\n"
> end
> end
>
> I have this in my unicorn config:
> Logger.new($stderr).tap do |newlgr|
> newlgr.formatter = JsonLogFormatter.new
> end
I suspect that needs "logger()" around it, like so:
logger(Logger.new($stderr).tap do |newlgr|
newlgr.formatter = JsonLogFormatter.new
end)
cf. https://yhbt.net/unicorn/Unicorn/Configurator.html#method-i-logger
> For the most part it works and I get the stdout and stderr in json but
> I also see some other non-json formatted messages, for example:
> {"time":"2021-07-06 17:14:01
> +1000","severity":"INFO","source":"","message":"Started GET \"/admin\"
> for 127.0.0.1 at 2021-07-06 17:14:01 +1000"}
> 127.0.0.1 - - [06/Jul/2021 17:14:01] "GET /admin HTTP/1.1" 301 102 0.4243
I suspect one of those lines could be the result of
Rack::CommonLogger from RACK_ENV=deployment or similar
(which matched "rackup" defaults back in 2009).
Personally, I always used something non-standard like "RACK_ENV=none"
to disable all default Rack middleware (--no-default-middleware
exists nowadays, too).
> It seems that rails logs are working and then the unicorn process
> itself is outputting its own logs because I can see duplicates of the
> same log message one in json and the other in plain text.
>
> Just want to know if there is a way to get this working consistently?
I've never used the "logger" directive much myself; maybe others
here can chime in with experience using non-standard loggers.
next prev parent reply other threads:[~2021-07-06 10:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-06 7:22 Formatting unicorn logs in json format for $stderr Cenon Del Rosario
2021-07-06 10:41 ` Eric Wong [this message]
2021-07-06 23:21 ` Cenon Del Rosario
2021-07-06 23:38 ` Eric Wong
2021-07-07 0:04 ` Cenon Del Rosario
2021-07-07 0:16 ` Eric Wong
2021-07-07 7:01 ` Cenon Del Rosario
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://yhbt.net/unicorn/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210706104124.GA438@dcvr \
--to=e@80x24.org \
--cc=cdelrosario@publishing.nine.com.au \
--cc=unicorn-public@yhbt.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhbt.net/unicorn.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).