Tail File

So you want to continuously read from a file like tail -f on Linux, but you want to stay in dart. This is the package for you.

Why does this package exist? I wanted to parse structured log lines from a running service. I also wanted to watch for new files being created; so bonus: you can use WatchPath.

Run into a problem? File a bug or send a PR.

Bytes?

final tail = TailFile(File('/var/log/syslog'));
await for (var line in tail.stream) {
  print('system log: $line');
}

Strings?

final tail = TailFile(File('/var/log/syslog'));
await for (var line in tail.asStrings) {
  print('system log: $line');
}

Lines?

final tail = TailFile(File('/var/log/syslog'));
await for (var line in tail.asLines) {
  print('system log: $line');
}

Watch files for changes?

for (var record in WatchPath()
    .forPattern(Directory('/path/to/folder', RegExp(r'file-.*')))) {
  print('new file detected: $record');
}

Coverage

Tested on Windows, Linux, and MacOS.

dart pub global activate coverde
flutter test --coverage
coverde check -i coverage/lcov.info 100

lib/src/extensions.dart (100.00% - 2/2)
lib/tailf.dart (100.00% - 3/3)
lib/src/tailf.dart (100.00% - 33/33)
lib/src/watch_path.dart (100.00% - 22/22)

GLOBAL:
100.00% - 60/60

Libraries

tailf