private Stream<LoggedAction> loadLog(FilterList<Action> filters) throws IOException {
        // if there is log content waiting to be written, flush immediately before trying to read
        if (this.saveBuffer.isEnqueued()) {
            this.saveBuffer.requestDirectly();
        }

        if (!Files.exists(this.contentFile)) {
            return Stream.empty();
        }

        Stream.Builder<LoggedAction> builder = Stream.builder();
        try (BufferedReader reader = Files.newBufferedReader(this.contentFile, StandardCharsets.UTF_8)) {
            String line;
            while ((line = reader.readLine()) != null) {
                try {
                    JsonElement parsed = GsonProvider.parser().parse(line);
                    LoggedAction action = ActionJsonSerializer.deserialize(parsed);
                    if (filters.evaluate(action)) {
                        builder.add(action);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return builder.build();
    }
The queue of entries pending save to the file
common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/FileActionLogger.java