add logging struct with -u json options flag, log tiling progress [#13]

This commit is contained in:
Brandon Liu
2022-07-05 15:32:11 +08:00
parent 4adb22b74e
commit f442e403c5
8 changed files with 41 additions and 1 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ C = $(wildcard *.c) $(wildcard *.cpp)
INCLUDES = -I/usr/local/include -I. INCLUDES = -I/usr/local/include -I.
LIBS = -L/usr/local/lib LIBS = -L/usr/local/lib
tippecanoe: geojson.o jsonpull/jsonpull.o tile.o pool.o mbtiles.o geometry.o projection.o memfile.o mvt.o serial.o main.o text.o dirtiles.o plugin.o read_json.o write_json.o geobuf.o flatgeobuf.o evaluator.o geocsv.o csv.o geojson-loop.o tippecanoe: geojson.o jsonpull/jsonpull.o tile.o pool.o mbtiles.o geometry.o projection.o memfile.o mvt.o serial.o main.o text.o dirtiles.o plugin.o read_json.o write_json.o geobuf.o flatgeobuf.o evaluator.o geocsv.o csv.o geojson-loop.o json_logger.o
$(CXX) $(PG) $(LIBS) $(FINAL_FLAGS) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) -lm -lz -lsqlite3 -lpthread $(CXX) $(PG) $(LIBS) $(FINAL_FLAGS) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) -lm -lz -lsqlite3 -lpthread
tippecanoe-enumerate: enumerate.o tippecanoe-enumerate: enumerate.o
+1
View File
@@ -529,6 +529,7 @@ the same layer, enclose them in an `all` expression so they will all be evaluate
* `-q` or `--quiet`: Work quietly instead of reporting progress or warning messages * `-q` or `--quiet`: Work quietly instead of reporting progress or warning messages
* `-Q` or `--no-progress-indicator`: Don't report progress, but still give warnings * `-Q` or `--no-progress-indicator`: Don't report progress, but still give warnings
* `-U` _seconds_ or `--progress-interval=`_seconds_: Don't report progress more often than the specified number of _seconds_. * `-U` _seconds_ or `--progress-interval=`_seconds_: Don't report progress more often than the specified number of _seconds_.
* `-u` or `--json-progress`: like `-quiet` but logs progress as a JSON object. Use in combination with `-U`.
* `-v` or `--version`: Report Tippecanoe's version number * `-v` or `--version`: Report Tippecanoe's version number
### Filters ### Filters
+8
View File
@@ -0,0 +1,8 @@
#include <stdarg.h>
#include <fstream>
#include "json_logger.hpp"
void json_logger::progress_tile(double progress) {
fprintf(stderr,"{\"progress\":%3.1f}\n",progress);
}
+13
View File
@@ -0,0 +1,13 @@
#include <iostream>
#ifndef LOGGING_HPP
#define LOGGING_HPP
struct json_logger {
bool json_enabled = false;
void progress_tile(double progress);
};
#endif
+7
View File
@@ -69,6 +69,7 @@ static int min_detail = 7;
int quiet = 0; int quiet = 0;
int quiet_progress = 0; int quiet_progress = 0;
json_logger logger;
double progress_interval = 0; double progress_interval = 0;
std::atomic<double> last_progress(0); std::atomic<double> last_progress(0);
int geometry_scale = 0; int geometry_scale = 0;
@@ -2690,6 +2691,7 @@ int main(int argc, char **argv) {
{"quiet", no_argument, 0, 'q'}, {"quiet", no_argument, 0, 'q'},
{"no-progress-indicator", no_argument, 0, 'Q'}, {"no-progress-indicator", no_argument, 0, 'Q'},
{"progress-interval", required_argument, 0, 'U'}, {"progress-interval", required_argument, 0, 'U'},
{"json-progress", no_argument, 0, 'u'},
{"version", no_argument, 0, 'v'}, {"version", no_argument, 0, 'v'},
{"", 0, 0, 0}, {"", 0, 0, 0},
@@ -3003,6 +3005,11 @@ int main(int argc, char **argv) {
quiet_progress = 1; quiet_progress = 1;
break; break;
case 'u':
quiet = 1;
logger.json_enabled = true;
break;
case 'U': case 'U':
progress_interval = atof_require(optarg, "Progress interval"); progress_interval = atof_require(optarg, "Progress interval");
break; break;
+3
View File
@@ -5,6 +5,8 @@
#include <atomic> #include <atomic>
#include <string> #include <string>
#include "json_logger.hpp"
struct index { struct index {
long long start = 0; long long start = 0;
long long end = 0; long long end = 0;
@@ -38,6 +40,7 @@ void checkdisk(std::vector<struct reader> *r);
extern int geometry_scale; extern int geometry_scale;
extern int quiet; extern int quiet;
extern int quiet_progress; extern int quiet_progress;
extern json_logger logger;
extern double progress_interval; extern double progress_interval;
extern std::atomic<double> last_progress; extern std::atomic<double> last_progress;
+2
View File
@@ -687,6 +687,8 @@ If you don't specify, it will use \fB\fC/tmp\fR\&.
.IP \(bu 2 .IP \(bu 2
\fB\fC\-U\fR \fIseconds\fP or \fB\fC\-\-progress\-interval=\fR\fIseconds\fP: Don't report progress more often than the specified number of \fIseconds\fP\&. \fB\fC\-U\fR \fIseconds\fP or \fB\fC\-\-progress\-interval=\fR\fIseconds\fP: Don't report progress more often than the specified number of \fIseconds\fP\&.
.IP \(bu 2 .IP \(bu 2
\fB\fC\-u\fR or \fB\fC\-\-json\-progress\fR: like \fB\fC\-quiet\fR but logs progress as a JSON object. Use in combination with \fB\fC\-U\fR\&.
.IP \(bu 2
\fB\fC\-v\fR or \fB\fC\-\-version\fR: Report Tippecanoe's version number \fB\fC\-v\fR or \fB\fC\-\-version\fR: Report Tippecanoe's version number
.RE .RE
.SS Filters .SS Filters
+6
View File
@@ -1330,6 +1330,9 @@ serial_feature next_feature(FILE *geoms, std::atomic<long long> *geompos_in, cha
if (!quiet && !quiet_progress && progress_time()) { if (!quiet && !quiet_progress && progress_time()) {
fprintf(stderr, " %3.1f%% %d/%u/%u \r", progress, z, tx, ty); fprintf(stderr, " %3.1f%% %d/%u/%u \r", progress, z, tx, ty);
} }
if (logger.json_enabled && progress_time()) {
logger.progress_tile(progress);
}
*oprogress = progress; *oprogress = progress;
} }
@@ -2325,6 +2328,9 @@ long long write_tile(FILE *geoms, std::atomic<long long> *geompos_in, char *meta
if (!quiet && !quiet_progress && progress_time()) { if (!quiet && !quiet_progress && progress_time()) {
fprintf(stderr, " %3.1f%% %d/%u/%u \r", progress, z, tx, ty); fprintf(stderr, " %3.1f%% %d/%u/%u \r", progress, z, tx, ty);
} }
if (logger.json_enabled && progress_time()) {
logger.progress_tile(progress);
}
oprogress = progress; oprogress = progress;
} }