Skip to content

filelog receiver: Last line of compressed files without new line ending is not read #45572

@ZoltanPeczoli

Description

@ZoltanPeczoli

Component(s)

receiver/filelog

What happened?

Description

When ingesting a compressed file (gzip) with filelog receiver, if the last line does not end in a newline character, the last line is never consumed.

If the same file (i.e. last line ending without newline character) is not compressed, the last line is consumed correctly.

Steps to Reproduce

echo -n '{"test": "uncompressed, no new line"}' > test_uncompressed.log
echo -n '{"test": "compressed, no new line"}' > test_compressed.log
gzip test_compressed.log

test.yaml:

receivers:
  filelog:
    include: [ "*log*" ]
    compression: auto
    start_at: beginning

exporters:
  debug:
    verbosity: normal # detailed

service:
  pipelines:
    logs:
      receivers: [filelog]
      exporters: [debug]

Expected Result

2026-01-22T06:57:47.033Z        info    fileconsumer/file.go:266        Started watching file   {"resource": {"service.instance.id": "35de927e-b634-4515-b6df-2fc2b446a6a8", "service.name": "otelcol-contrib", "service.version": "0.144.0"}, "otelcol.component.id": "filelog", "otelcol.component.kind": "receiver", "otelcol.signal": "logs", "component": "fileconsumer", "path": "test_compressed.log.gz"}
2026-01-22T06:57:47.034Z        info    fileconsumer/file.go:266        Started watching file   {"resource": {"service.instance.id": "35de927e-b634-4515-b6df-2fc2b446a6a8", "service.name": "otelcol-contrib", "service.version": "0.144.0"}, "otelcol.component.id": "filelog", "otelcol.component.kind": "receiver", "otelcol.signal": "logs", "component": "fileconsumer", "path": "test_uncompressed.log"}
2026-01-22T06:57:47.728Z        info    Logs    {"resource": {"service.instance.id": "35de927e-b634-4515-b6df-2fc2b446a6a8", "service.name": "otelcol-contrib", "service.version": "0.144.0"}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "logs", "resource logs": 1, "log records": 1}
2026-01-22T06:57:47.728Z        info    ResourceLog #0
ScopeLog #0
{"test": "uncompressed, no new line"} log.file.name=test_uncompressed.log
{"test": "compressed, no new line"} log.file.name=test_compressed.log.gz

Actual Result

2026-01-22T06:57:47.033Z        info    fileconsumer/file.go:266        Started watching file   {"resource": {"service.instance.id": "35de927e-b634-4515-b6df-2fc2b446a6a8", "service.name": "otelcol-contrib", "service.version": "0.144.0"}, "otelcol.component.id": "filelog", "otelcol.component.kind": "receiver", "otelcol.signal": "logs", "component": "fileconsumer", "path": "test_compressed.log.gz"}
2026-01-22T06:57:47.034Z        info    fileconsumer/file.go:266        Started watching file   {"resource": {"service.instance.id": "35de927e-b634-4515-b6df-2fc2b446a6a8", "service.name": "otelcol-contrib", "service.version": "0.144.0"}, "otelcol.component.id": "filelog", "otelcol.component.kind": "receiver", "otelcol.signal": "logs", "component": "fileconsumer", "path": "test_uncompressed.log"}
2026-01-22T06:57:47.728Z        info    Logs    {"resource": {"service.instance.id": "35de927e-b634-4515-b6df-2fc2b446a6a8", "service.name": "otelcol-contrib", "service.version": "0.144.0"}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "logs", "resource logs": 1, "log records": 1}
2026-01-22T06:57:47.728Z        info    ResourceLog #0
ScopeLog #0
{"test": "uncompressed, no new line"} log.file.name=test_uncompressed.log

Collector version

0.144.0

Environment information

OS: RHEL 9.5

OpenTelemetry Collector configuration

receivers:
  filelog:
    include: [ "*log*" ]
    compression: auto
    start_at: beginning

exporters:
  debug:
    verbosity: normal # detailed

service:
  pipelines:
    logs:
      receivers: [filelog]
      exporters: [debug]

Log output

2026-01-22T06:57:47.033Z        info    fileconsumer/file.go:266        Started watching file   {"resource": {"service.instance.id": "35de927e-b634-4515-b6df-2fc2b446a6a8", "service.name": "otelcol-contrib", "service.version": "0.144.0"}, "otelcol.component.id": "filelog", "otelcol.component.kind": "receiver", "otelcol.signal": "logs", "component": "fileconsumer", "path": "test_compressed.log.gz"}
2026-01-22T06:57:47.034Z        info    fileconsumer/file.go:266        Started watching file   {"resource": {"service.instance.id": "35de927e-b634-4515-b6df-2fc2b446a6a8", "service.name": "otelcol-contrib", "service.version": "0.144.0"}, "otelcol.component.id": "filelog", "otelcol.component.kind": "receiver", "otelcol.signal": "logs", "component": "fileconsumer", "path": "test_uncompressed.log"}
2026-01-22T06:57:47.728Z        info    Logs    {"resource": {"service.instance.id": "35de927e-b634-4515-b6df-2fc2b446a6a8", "service.name": "otelcol-contrib", "service.version": "0.144.0"}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "logs", "resource logs": 1, "log records": 1}
2026-01-22T06:57:47.728Z        info    ResourceLog #0
ScopeLog #0
{"test": "uncompressed, no new line"} log.file.name=test_uncompressed.log

Additional context

No response

Tip

React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions