Releases: clemcer/LoggiFly
v1.7.2
v1.7.1
v1.7.0
🚀 New Features:
- option to monitor all containers / swarm services automatically
- New settings:
monitor_all_containers,excluded_containers,monitor_all_swarm_services,excluded_swarm_services - monitor all containers on one specific host (see docs)
- New settings:
🐛 Bug Fixes:
v1.6.0
🚀 New Features:
- simpler way to configure containers for different hosts in the
config.yaml(see docs) - Allow running multiple OliveTin Actions per keyword (see docs)
- Configure Arguments for your OliveTin Actions (see docs)
- New setting:
compact_summary_messageformats the summary as a comma-separated list of monitored containers, rather than a multi-line list.
🐛 Bug Fixes
- Fix Swarm Service monitoring not working on worker nodes
⚙️ Improvements
- OliveTin Actions run in separate threads now and no longer block the monitoring thread of the respective container
- Remove limitation that containers and keywords have to be configured (via config or environment variables) in case of label only configuration
Note for people wanting to configure swarm services via labels
Since LoggiFly can only read the swarm service labels (set under deploy in the compose file) when running on a manager node it is recommended to set the labels directly in the container labels of the compose file (see docs)
v1.5.0
v1.5.0 - Enhanced Actions, distroless, configuration via Docker labels and more
This release brings enhanced actions, more flexible configuration options, and stronger performance & security. With OliveTin support (incl. auth), the possibility to run actions against other containers, docker label-based configuration, keyword groups, and a distroless image that can be run in read-only mode, LoggiFly is more flexible and secure than ever.
🚀 New Features
-
OliveTin Actions Integration
- Trigger OliveTin actions from log events.
- Supports username/password authentication.
- Configurable globally, per container, or per keyword.
- Execution details are included in a separate notification.
- See docs
-
Cross-Container Actions (
action@target)- Run actions against other containers, e.g.
restart@some-other-container. - See docs
- Run actions against other containers, e.g.
-
Per-Action Cooldowns (per container)
- Cooldowns are tracked per specific action string (including target) per container.
Example:restartandrestart@some-other-containerhave separate cooldowns for the container that they are configured under. - Minimum cooldown: 10s. Default remains 300s.
- Cooldowns are tracked per specific action string (including target) per container.
-
Keyword Groups
- Use
keyword_groupto trigger only when all keywords in a group are present. - See docs
- Use
-
Docker Label-Based Configuration
- Configure containers or Swarm services via Docker labels (e.g.
loggifly.setting_name,loggifly.keywords, …). - See docs
- Configure containers or Swarm services via Docker labels (e.g.
-
Disable Notifications
- new setting:
disable_notifications - Suppress notifications for log events globally, per container, or per keyword
- useful for action-only workflows.
- new setting:
⚙️ Improvements
-
Performance
- Reduced CPU usage: instead of flushing the buffer every second (the buffer is where lines are combined into multi line entries), flush threads now sleep and are only waken up temporarily to flush the buffer after new lines are detected.
-
Read-Only Container Support (Security)
- Attachments now work in read-only contexts, allowing you to set
read_only: truein your Compose file for better security.
- Attachments now work in read-only contexts, allowing you to set
-
Distroless Base Image
- Switched to a distroless Python image: smaller footprint, fewer packages, no shell, reduced attack surface.
-
Configuration Validation
- Validation for regex & more, clearer error messages.
-
Notifications
- Consolidated: one combined notification message for all hosts (instead of one per host).
-
Refactoring
- More robust internals and error handling.
🐛 Bug Fixes
- Fixed: globally excluded keywords were not applied correctly.
- Fixed: container notification cooldown could not be set to
0.
📖 Documentation
- New/updated sections for OliveTin, cross-container actions, keyword groups, label-based configuration, docker compose examples, and more.
💡 Tip: Monitoring System Logs
A simple way to capture system logs (e.g. failed SSH login attempts) is to use a Fluentbit Container that streams journal logs to its docker container logs where LoggiFly can then monitor them. More details in the docs.
v1.4.2
v1.4.1
v1.4.0
v1.4.0 – More Modular Config, Podman Support & More
This release brings a major upgrade to LoggiFly’s configuration system, enhanced template capabilities, Podman compatibility, along with some bug fixes and other improvements.
✨ New Features
Simpler configuration of attachments & actions
The configuration format has been simplified and unified.
Previously, you had to define keywords in multiple sections:
🔁 Old structure:
containers:
mycontainer:
keywords:
- error
keywords_with_attachment:
- "important alert"
action_keywords:
- restart: "fatal crash"
- stop:
regex: "unauthorized access"✅ Now replaced with a single keywords: section:
containers:
mycontainer:
keywords:
- error
- important alert
attach_logfile: true
- keyword: "fatal crash"
action: restart
- regex: "unauthorized access"
action: stopNote
All existing configs using keywords_with_attachment and action_keywords are automatically interpreted and converted into the new unified format at runtime.
However, editing your config.yaml and switching to the new format is still recommended for clarity and full feature support
Warning
hide_pattern_in_title has been renamed to hide_regex_in_title and is not automatically migrated.
More modular settings (#20)
The configuration system is now fully modular and much more powerful:
- all notification settings can now be set per container and per keyword/regex allowing you to send notifications to different channels/services depending on the contaier or keyword
- a lot of other settings you could previously set globally and per container can now be set per keyword/regex as well
Example:
container:
apprise_url: "discord://webhook-url"
keywords:
- keyword1
- regex: regex-pattern1
ntfy_tags: partying_face
ntfy_priority: 5
ntfy_topic: error
attachment_lines: 10
hide_regex_in_title: true
- keyword: keyword2
apprise_url: "discord://webhook-url"
action: restart
action_cooldown: 60
notification_title: '{container} restarted because these keywords were found: {keywords}'
notification_cooldown: 10
attach_logfile: trueAll available settings and their applicable levels (global / container / keyword) are documented here.
New Setting: excluded_keywords (#29)
This setting allows you to define keywords or regexes that should never trigger a notification. They can be defined at any level:
settings:
excluded_keywords: # global
- "debug"
- regex: "^healthcheck:.*"
containers:
mycontainer:
excluded_keywords: # per container
- "ignore this"
keywords:
- keyword: "critical error"
excluded_keywords: # per keyword
- regex: false alarmContainer Host Assignment (#27)
- New
hosts:setting allows containers to be monitored only on specified hostnames in case you are montiring multiple hosts
JSON Template Enhancements (#25)
-
Improved
json_templatenow supports nested json structures:{key}for top-level fields{dict[key]}for nested fields{list[index][key]}for arrays
Official Podman Support thanks to @L-Schwarz (#21)
- You can now run LoggiFly with Podman, including rootless setups using quadlets. Full examples are in the new docs.
→ Documentation
Fixes & Improvements
- Fixed: Docker Swarm error:
no keywords configured. - Improved: handling of restarted containers
- Podman: Added workaround for timeout issues when no logs are available.
- Various other small improvements
📚 Documentation
📘 New documentation site:
Includes a lot of improvements and the following new sections that were not previously in the README:
-
Settings Overview:
Tables showing which settings apply globally, per container, or per keyword -
Podman Support:
With full examples for podman run, quadlet + systemd