Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Small command-line JSON Log viewer

License

NotificationsYou must be signed in to change notification settings

brocode/fblog

Repository files navigation

fblog

A small tool to view json log files.

Print specific fields

fblog -a message -a"status > a" sample_nested.json.log

Prefix Logs

If your query docker or kubectl for multiple pods it will prefix the loglines:PODNAME | {"message": "test"}.fblog can parse this and addit to the message. Just use-p.

Filter

To filter log messages it is possible to use lua. If you are unsurewhich variables are available you can use--print-lua to see the codegenerated by fblog.

fblog -f'level ~= "info"'# will print all message where the level is not infofblog -f'process == "play"'# will print all message where the process is playfblog -f'string.find(fu, "bow.*") ~= nil'# will print all messages where fu starts with bowfblog -f'process == "play"'# will print all message where the process is playfblog -f'process == "rust" and fu == "bower"'fblog --no-implicit-filter-return-statement -f'if 3 > 2 then return true else return false end'# not valid lua identifiers like log.level gets converted to log_level.# Every character that is not _ or a letter will be converted to _fblog -d -f'log_level == "WARN"' sample_elastic.log# nested fields are converted to lua recordsfblog  -d -f'status.a == 100' sample_nested.json.log# array fields are converted to lua tables (index starts with 1)fblog  -d -f'status.d[2] == "a"' sample_nested.json.log

Customize

fblog tries to detect the message, severity and timestamp of a logentry. This behavior can be customized. See--help for moreinformation.

You can customize fblog messages: Format output:

fblog -p --main-line-format"{{#if short_message}}{{ red short_message }}{{/if}}" sample.json.log

The following sanitized variables are provided by fblog:

  • fblog_timestamp
  • fblog_level
  • fblog_message
  • fblog_prefix

For the default formatting see--help

Nested values are registered as objects. So you can usenested.valueto access nested values.

handlebar helpers:

  • bold
  • yellow
  • red
  • blue
  • purple
  • cyan
  • green
  • color_rgb 0 0 0
  • uppercase
  • level_style
  • fixed_size 10
  • min_size 10

NO_COLOR

fblog disables color output if theNO_COLOR environment variable ispresent.

no-color

Message placeholder substitution

Placeholders in the message (fblog_message) can be substituted withtheir corresponding values in a context object or array. To enablesubstitutions, pass the-s flag or either set context key(-c context) or placeholder format (-F {key}).

Note that the placeholder format should be written like<PREFIX>key<SUFFIX>, where it would match a placeholder with the keykey.

Example

Given the following log (referred to asexample.log):

{"message":"Found #{count} new items.","extra_data": {"count":556},"level":"info"}

Running with the following arguments:

fblog -c extra_data -F'#{key}' example.log

Result:

Installation

cargo install fblog

Available in package managers:AUR,brew

Log tailing

fblog does not support native log tailing but this is easilyachievable.

tail -f file| fblog

Or with kubernetes tooling for example

kubectl logs -f ...| fblog

In general you can pipe any endless stream to fblog.

shell completions

fblog --generate-completions<shell>

configuration file

fblog reads its configuration from a file calledfblog.toml, which is located

Linux:$XDG_CONFIG_HOME or$HOME/.config

Windows:{FOLDERID_RoamingAppData}

macOS:$HOME/Library/Application Support

If the file does not exist or is emptythis is the default config.

log levels

These levels are colorized by fblog:

tracedebuginfowarnerrorfatal

You can map additional level values (used for output and color):

[level_map]10 ="trace"20 ="debug"30 ="info"40 ="warn"50 ="error"60 ="fatal"# these values for example are used by https://www.npmjs.com/package/bunyan#levels

k9s

In the file~/.config/k9s/plugins.yaml add this:

plugins:fblog-pod:shortCut:Shift-Lconfirm:falsedescription:"fblog"scopes:      -podscommand:shbackground:falseargs:      --c      -"kubectl logs --follow -n $NAMESPACE $NAME | fblog"fblog-container:shortCut:Shift-Lconfirm:falsedescription:"fblog"scopes:      -containerscommand:shbackground:falseargs:      --c      -"kubectl logs  --follow -n $NAMESPACE $POD -c $NAME | fblog"fblog-pod-all:shortCut:Shift-Kconfirm:falsedescription:"fblog -d"scopes:      -podscommand:shbackground:falseargs:      --c      -"kubectl logs --follow -n $NAMESPACE $NAME | fblog -d"fblog-container-all:shortCut:Shift-Kconfirm:falsedescription:"fblog -d"scopes:      -containerscommand:shbackground:falseargs:      --c      -"kubectl logs  --follow -n $NAMESPACE $POD -c $NAME | fblog -d"

About

Small command-line JSON Log viewer

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors12


[8]ページ先頭

©2009-2025 Movatter.jp