🍺 BREW Explorer

← all formulae

fblog

brew install fblog v4.17.0 WTFPL

Small command-line JSON log viewer

10
30-day installs · #8725
42
90-day · #7787
406
365-day · #5571
561
★ GitHub stars · updated 2mo ago

Build dependencies

GitHub topics

command-line command-line-tool json log viewer

Links

Raw metadata
{
  "aliases": [],
  "alternatives": [],
  "build_dependencies": [
    "rust"
  ],
  "categories": [],
  "caveats": null,
  "conflicts_with": [],
  "dependencies": [],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "Small command-line JSON log viewer",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:37:32+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "fblog",
  "github_default_branch": "master",
  "github_last_commit_at": "2026-06-05T19:03:32Z",
  "github_readme_excerpt": "![](./logo/fblog_small.png)\n\n# fblog\n\n\nA small tool to view json log files.\n\n![](demo.png)\n\n## Print specific fields\n\n``` shell-script\nfblog -a message -a \"status \u003e a\" sample_nested.json.log\n```\n\n## Prefix Logs\n\nIf your query docker or kubectl for multiple pods it will prefix the log\nlines: `PODNAME | {\"message\": \"test\"}`. `fblog` can parse this and add\nit to the message. Just use `-p`.\n\n## Filter\n\nTo filter log messages it is possible to use lua. If you are unsure\nwhich variables are available you can use `--print-lua` to see the code\ngenerated by fblog.\n\n```bash\nfblog -f \u0027level ~= \"info\"\u0027 # will print all message where the level is not info\nfblog -f \u0027process == \"play\"\u0027 # will print all message where the process is play\nfblog -f \u0027string.find(fu, \"bow.*\") ~= nil\u0027 # will print all messages where fu starts with bow\nfblog -f \u0027process == \"play\"\u0027 # will print all message where the process is play\nfblog -f \u0027process == \"rust\" and fu == \"bower\"\u0027\nfblog --no-implicit-filter-return-statement -f \u0027if 3 \u003e 2 then return true else return false end\u0027\n\n# not valid lua identifiers like log.level gets converted to log_level.\n# Every character that is not _ or a letter will be converted to _\nfblog -d -f \u0027log_level == \"WARN\"\u0027 sample_elastic.log\n\n# nested fields are converted to lua records\nfblog  -d -f \u0027status.a == 100\u0027 sample_nested.json.log\n\n# array fields are converted to lua tables (index starts with 1)\nfblog  -d -f \u0027status.d[2] == \"a\"\u0027 sample_nested.json.log\n```\n\n## Customize\n\n`fblog` tries to detect the message, severity and timestamp of a log\nentry. This behavior can be customized. See `--help` for more\ninformation.\n\nYou can customize fblog messages: Format output:\n\n``` shell-script\nfblog -p --main-line-format \"{{#if short_message}}{{ red short_message }}{{/if}}\" sample.json.log\n```\n\nThe following sanitized variables are provided by fblog:\n\n-   fblog_timestamp\n-   fblog_level\n-   fblog_message\n-   fblog_prefix\n\nFor the default formatting see `--help`\n\nNested values are registered a",
  "github_repo": "brocode/fblog",
  "github_stars": 561,
  "github_topics": [
    "command-line",
    "command-line-tool",
    "json",
    "log",
    "viewer"
  ],
  "homepage": "https://github.com/brocode/fblog",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": 10,
  "installs_365d": 406,
  "installs_90d": 42,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "WTFPL",
  "llm_generated_at": null,
  "llm_model": null,
  "name": "fblog",
  "oldnames": [],
  "one_liner": null,
  "optional_dependencies": [],
  "rank_30d": 8725,
  "rank_365d": 5571,
  "rank_90d": 7787,
  "raw_hash": "10bdce2ab213781e",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/f/fblog.rb",
  "tap": "homebrew/core",
  "test_dependencies": [],
  "uses_from_macos": [],
  "version_head": "HEAD",
  "version_stable": "4.17.0",
  "versioned_formulae": [],
  "why_use_this": null
}