I wrote brewlog
to patch a minor but IMHO a significant shortcoming I feel homebrew has had for a very long time; and that is the ability to log what homebrew does, more specifically maintain a log of user-executed brew
activity. IMO it didn't have to be something very sophisticated i.e. integration with system-log, etc.. So, I worked on an idea I found about from this particular issue and developed brewlog
.
Yes, brew
is generally very stable, but occasionally it breaks compatibility when it is upgrading some packages and removes some “obsolete” versions. Generally this is fine, but in certain cases the user wants to retain those packages for compatibility with something else. I recently faced a problem due to this. While brewlog
can’t prevent something like this from happening, but it logs brew
activity so it is much easier to troubleshoot (by identifying what package(s) were added/removed).
brewlog
is simple solution that can:
log
brew
activity (STDOUT
andSTDERR
) to a logfile (default:~/Logs/brew.log
)- because brewlog is a a new command (and not an alias), the user still retains the freedom to run
brew [command] [formula]
in case they do not want to log some brew activity.
- because brewlog is a a new command (and not an alias), the user still retains the freedom to run
tail
thebrew.log
file to display selected number of lines.archive
the brew.log file (user has to explicitly invoke this command to archive).- The
brew.log
is removed during archiving, a new log file is created on the next run ofbrewlog
.
- The
Now you're easily able to track the changes made to your system while running brew upgrade
or brew cleanup
.
The script install.sh
automatically picks the place to install brewlog by detecting the location where the brew
binary is placed in your system $PATH
.
# Install
curl -sSL 'https://raw.githubusercontent.com/dchakro/brewlog/master/install.sh' | bash
# Show help
brewlog --help
- Download the binary from the latest release (should run on *nix with a homebrew installation).
mv brewlog /usr/local/bin/brewlog
or to some other place that is in your$PATH
.- Familiarize yourself by running
brewlog —help
.
# download
curl -OJL 'https://raw.githubusercontent.com/dchakro/brewlog/master/install.sh'
# Review/Modify code
bat install.sh
nano install.sh
# Install
sh install.sh | bash
# Show help
brewlog --help
# Running homebrew commands
brewlog install ffmpeg
brewlog info ffmpeg
brewlog outdated
# Tail the log file
brewlog tail
brewlog tail -n 5
# archive the current log file
brewlog archive
# Even complex brew commands work with brewlog
brewlog list --multiple --versions
brew deps ffmpeg | xargs brewlog uninstall ----ignore-dependencies
# Writing package and cask dependency tree
brewlog tree
package and cask dependency tree updated. Find it here: ~/Logs/brew_tree.txt
brewlog - allows you to log your homebrew/linuxbrew operations to a file.
Usage:
brewlog [brew command] [arguments to homebrew]
e.g.
brewlog install ffmpeg, invokes "brew install ffmpeg" and writes output to a log file.
OPTIONS:
--help Show help
--brew-help Show brew commands (alias to "brew help")
version Show brewlog version info
tree Write the dependency tree of all installed packages & casks to a file
archive Archives the current log file as .xz (gzip as fallback if xz not found)
find [TERM] grep the TERM in the logfile.
tail [-n INT] Show the last "INT" lines from the log file.
(default: last 15 lines)
Homebrew/Linuxbrew Function examples:
brewlog install [formula] Install formula
brewlog uninstall [formula] Uninstall formula
brewlog deps [formula] Show dependencies for [formula]
brewlog uses --installed [formula] Show items listing [formula] as a dependency
brewlog outdated Show outdated formulae
brewlog upgrade [formula] Upgrade all (or entered) brew formula
... ... ...
Find out more homebrew commands by running "brew --help".
If you found brewlog
useful consider adding a star ‘✩' to this repo.
- Not to be confused with
brew log
which shows the commit history (similar togit log
). - I'm open to a new name, but for now as I personally don’t use
brew log
, I had no “merge conflicts” in my brain while assigningbrewlog
to achive my desired result of logging brew output :) [IMHObrew history
might have been a better name forbrew log
]
© Deepankar Chakroborty, 2020. All rights reserved.