log4rs 1.4.0

A highly configurable multi-output logging implementation for the `log` facade
Documentation
---
name: Build CI

on:
  push:
    branches:
    - main
    - devel
  pull_request:
    branches:
    - main
    - devel

jobs:
  test:
    name: Test
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        rust_versions: ["stable", "1.75"]
        os: [ubuntu-latest, windows-latest]
    steps:
    - name: Checkout the source code
      uses: actions/checkout@v4

    - uses: dtolnay/rust-toolchain@master
      with:
        toolchain: ${{ matrix.rust_versions }}

    - name: Build lib
      run: cargo build

    - name: Test lib
      run: |
        cargo test --all-features
        # This test needs another run under the release mode
        cargo test --release --features simple_writer encode::pattern::tests::debug_release
      env:
        RUSTFLAGS: -D warnings --cfg mock_time

  features:
    name: Test Individual Features
    runs-on: ubuntu-latest
    steps:
    - name: Checkout the source code
      uses: actions/checkout@v4

    - uses: dtolnay/rust-toolchain@stable

    - name: Install jq
      run: |
        sudo apt-get install -y --no-install-recommends jq

    - name: Test lib
      run: |
        for feature in $(cargo read-manifest | jq -r '.features|keys|join("\n")'); do
            echo building with feature "$feature"
            RUSTFLAGS='-D warnings --cfg mock_time' cargo test --no-default-features --features "$feature"
        done

  bench:
    name: Benchmark the background_rotation feature
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust_versions: ["stable", "1.75"]
    steps:
    - name: Checkout the source code
      uses: actions/checkout@v4

    - uses: dtolnay/rust-toolchain@master
      with:
        toolchain: ${{ matrix.rust_versions }}

    - name: Bench features
      run: cargo bench --all-features