Here’s a basic Alloy/Loki configuration for parsing Home Assistant logs to put in config.alloy:

////////
// Home Assistant Logs
////////

// Only fetch logs from specific container named `home-assistant`
discovery.docker "homeassistant" {
  host = "unix:///var/run/docker.sock"
  filter {
    name = "name"
    values = [
      "home-assistant",
    ]
  }
}

// Some basic relabelling
discovery.relabel "logs_integrations_homeassistant" {
    targets = discovery.docker.homeassistant.targets

    rule {
        target_label = "job"
        replacement  = "integrations/homeassistant"
    }

    rule {
        target_label = "instance"
        replacement  = constants.hostname
    }

    rule {
        source_labels = ["__meta_docker_container_name"]
        regex         = "/(.*)"
        target_label  = "container"
    }

    rule {
        source_labels = ["__meta_docker_container_log_stream"]
        target_label  = "stream"
    }
}

// Log processing
loki.process "homeassistant" {
    // You Loki instance
	forward_to = [loki.write.default.receiver]

    // Define the start of multiline logs
	stage.multiline {
		firstline = "^.*(?<date>\\d{4}-\\d{2}-\\d{2}) (?<time>\\d{2}:\\d{2}:\\d{2}.\\d{3}) (?<loglevel>[A-Z]+) \\((?<thread>.*)\\) \\[(?<integration>[\\w\\.]+)\\] (?<message>.*)"
		max_wait_time = "3s"
		max_lines = 128
	}

    // Parsing
	stage.regex {
		expression = "(?s)^.*(?<date>\\d{4}-\\d{2}-\\d{2}) (?<time>\\d{2}:\\d{2}:\\d{2}.\\d{3}) (?<loglevel>[A-Z]+) \\((?<thread>.*)\\) \\[(?<integration>[\\w\\.]+)\\] (?<message>.*)"
	}

    // Convert loglevel to lowercase
    stage.replace {
        expression = "(?s)^.*\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}.\\d{3} (?<loglevel>[A-Z]+) \\(.*\\) \\[[\\w\\.]+\\] .*"
        replace    = "{{ .Value | ToLower }}"
    }

    // Assign parsed values to label
	stage.labels {
		values = {
			level = "loglevel",
			component = "component",
            integration = "integration",
            thread = "thread",
            message = "message",
            date = "date",
            time = "time",
		}
	}
}

// Push docker logs to Loki
loki.source.docker "homeassistant" {
  host       = "unix:///var/run/docker.sock"
  targets    = discovery.docker.homeassistant.targets
  labels     = {"platform" = "docker"}
  relabel_rules = discovery.relabel.logs_integrations_homeassistant.rules
  forward_to = [loki.process.homeassistant.receiver]
}