File: jl.pod

package info (click to toggle)
golang-github-mightyguava-jl 0.1.0%2Bgit20220705%2B8771236337c6-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 1,112 kB
  • sloc: makefile: 5
file content (108 lines) | stat: -rw-r--r-- 3,017 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
=encoding utf8

=head1 NAME

B<jl> - pretty-print JSON logs

=head1 SYNOPSIS

B<jl> [I<options...>] [I<file>]

=head1 DESCRIPTION

B<jl> is a parser and formatter for JSON logs, making machine-readable JSON logs human readable again.

B<jl> consumes JSON logs from stdin and writes human-readable logs to stdout. To use B<jl>, just pipe your JSON logs through it:

    ./my-app-executable | jl
    cat app-log.json | jl

B<jl> can read from a file:

    jl my-app-log.json

B<jl> itself doesn't support following log files, but since it can consume from a pipe, you can use B<tail>:

    tail -F app-log.json | jl

You can page B<jl>'s colorised output using B<less> with the B<-R> flag:

    jl my-app-log.json | less -R

=head1 OPTIONS

A summary of options is included below.

=over

=item B<-color> B<auto>|B<yes>|B<no>

Set the color mode. The options are "auto", "yes", and "no". "auto" disables color if stdout is not a TTY (default: "auto")

=item B<-format> B<compact>|B<logfmt>

Formatter for logs. The options are "compact" and "logfmt" (default: "compact")

=item B<-truncate>[B<=false>]

Whether to truncate strings in the compact formatter (default: true)

=back

=head1 FORMATTERS

B<jl> currently supports two formatters, with plans to make the formatters customizable.

The default is B<-format compact>, which extracts only important fields from the JSON log, like B<message>, B<timestamp>, B<level>, colorises and presents them in a easy to skim way. It drops unrecognised fields from the logs.

The other option is B<-format logfmt>, which formats the JSON logs in a way that closely resembles logfmt
This option emits all fields from each log line.

Both formatters echo non-JSON log lines as-is.

=head1 LOG FORMATS

JSON application logs tend to have some core shared fields, like B<level>, B<timestamp>, and B<message> which B<jl> tries to discover and prioritise for formatting. For now, the following formats work best with B<jl>. For string fields other than B<level>, only the keys matter.

Other formats can be used after preprocessing with B<jq>.

=over

=item * Java-like:

    {
      "level": "error",
      "timestamp": "2019-02-02 15:39:45",
      "logger": "HelloWorldService",
      "thread": "main",
      "message": "hello world",
      "exception": "java.lang.IllegalArgumentException: The world isn't here\n...stacktraces..."
    }

=item * Go/Logrus-like:

    {
      "level": "error",
      "timestamp": "2019-02-02 15:39:45",
      "msg": "hello world",
      "error": "hello error",
      "stack": "\nhello\n\thello.go\nworld\n\tworld.go"
    }

=back

=head1 COPYRIGHT

Copyright (C) 2019-2023 Yunchi Luo

License: MIT/Expat

This manual page is based on the README document by the author.
It was reformatted and adapted by Andrej Shadura L<< <andrewsh@debian.org> >>
for the Debian project, and is distributed under the same license as the
original project.

=head1 SEE ALSO

L<jq(1)>,
L<< https://blog.codeship.com/logfmt-a-log-format-thats-easy-to-read-and-write/ >>