Skip to content

Releases: clemcer/LoggiFly

v1.7.2

24 Oct 08:52

Choose a tag to compare

Changes:

  • Add Environment variables: MONITOR_ALL_CONTAINERS, MONITOR_ALL_SWARM_SERVICES, EXCLUDED_CONTAINERS, EXCLUDED_SWARM_SERVICES

v1.7.1

23 Oct 11:57

Choose a tag to compare

Fixes:

  • failed config validation when empty containers are configured (#52)
  • wrong warning message in logs about no containers being configured

v1.7.0

23 Oct 10:42

Choose a tag to compare

🚀 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)

🐛 Bug Fixes:

  • empty summary message when no containers are configured leading to errors (#51)
  • per host configuration not working when no global containers are configured (#51)

v1.6.0

28 Sep 13:24

Choose a tag to compare

🚀 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_message formats 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

07 Sep 14:35

Choose a tag to compare

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
  • Per-Action Cooldowns (per container)

    • Cooldowns are tracked per specific action string (including target) per container.
      Example: restart and restart@some-other-container have separate cooldowns for the container that they are configured under.
    • Minimum cooldown: 10s. Default remains 300s.
  • Keyword Groups

    • Use keyword_group to trigger only when all keywords in a group are present.
    • See docs
  • Docker Label-Based Configuration

    • Configure containers or Swarm services via Docker labels (e.g. loggifly.setting_name, loggifly.keywords, …).
    • See docs
  • Disable Notifications

    • new setting: disable_notifications
    • Suppress notifications for log events globally, per container, or per keyword
    • useful for action-only workflows.

⚙️ 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: true in your Compose file for better security.
  • 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

15 Jul 19:02

Choose a tag to compare

  • fix: Error while trying to send ntfy-notification, no default set for ntfy priority (#38)
  • changed: Allow running without notifications setup (#35)

Full Changelog: v1.4.1...v1.4.2

v1.4.1

03 Jul 16:20

Choose a tag to compare

  • fix Empty Container Keyword Entries not working anymore (#34)

v1.4.0

03 Jul 13:23

Choose a tag to compare

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: stop

Note

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

⚠️ The old setting 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: true

All 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 alarm

Container Host Assignment (#27)

  • New hosts: setting allows containers to be monitored only on specified hostnames in case you are montiring multiple hosts

Documentation.

JSON Template Enhancements (#25)

  • Improved json_template now supports nested json structures:

    • {key} for top-level fields
    • {dict[key]} for nested fields
    • {list[index][key]} for arrays

Documentation

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


v1.3.2

19 May 18:27

Choose a tag to compare

  • fix: KeyError when using swarm_services with custom a notification_title (#23)

v1.3.1

17 May 14:40

Choose a tag to compare

  • fix: KeyError when using swarm_services with custom a notification_title (#23)
  • fix: original_log_line key not working when using a json_template