[mkgmap-dev] logging improvements
From Mike Baggaley mike at tvage.co.uk on Fri Mar 19 23:52:14 GMT 2021
Dear all, Please find attached a first stab at improving the way error and other messages are written, which at present is an ad hoc mixture of writing to stderr, stdout and using Java logging, with no apparent logical structure. Writing to stderr or stdout is not thread safe and causes problems when max_jobs is greater than 1. When stderr is redirected to a file and threads simultaneously attempt to write to it, you end up with extra numbered log files containing a few lines that you would expect to be in the named log file. As mkgmap supports a configuration file that defines how messages should be logged, it doesn't make much sense writing a significant number of messages to stderr which is not under logging control. There are several diagnostic options that write their output using warning as the severity, but as this is not enabled by default in the logging, they appear to do nothing unless a logging configuration file is also used, which is not intuitive. The --check-routing-island-len option seems somewhat confused as it attempts to combine both reporting and fixing depending on the value supplied. It also requires info level of logging which would include a lot of other not necessarily wanted messages. If you are using it to fix, you don't necessarily also want any messages. In my view the way messages should be handled is as follows: If the message is an informational message about the program itself and is unrelated to processing any data then write it to stdout - this would apply to the output of --version and --help. If the message is an error message about an invalid parameter in the command line, write it to stderr. Once the command line has been processed sufficiently that a file is to be processed then write messages using logging. If a diagnostic option is enabled, the program should automatically log the requested diagnostic messages. This would apply to --check-roundabouts, --check-roundabout-flares, --report-similar-arcs, --check-routing-island-len and --report-dead-ends. The attached patch enhances the existing logging interface by providing the following: A mechanism for writing messages without any formatting getting added and that always get written whatever level of logging is enabled. A mechanism for writing stack trace information to the log file (I don't believe stack traces really have any place in released code but have not attempted to replace any of these). Mostly directs messages as per my above proposal, though there is the occasional place where the best option is not quite obvious to me, as I think some of the code is not part of the main mkgmap program (there are several main functions and some of the code is for testing purposes). Only logs the start and finish times if files are being processed. Outputs requested diagnostic messages regardless of enabled logging levels Changes --report-dead-ends to be off by default, with the value of 1 being the default if --report-dead-ends is specified without a value. Filters duplicated --report-similar-arcs messages and ignores synthesised arcs so that it can be used together with --make-opposite-cycleways. Deprecates --check-routing-island-len, replacing it with --report-routing-islands to handle reporting and --max-routing-island-len to handle fixing. I expect there will be the odd place where others may disagree with the logging level for a message, but no doubt we can come to a consensus. The patch touches quite a few source files, but there are only a few changes that are anything more than altering the message outputting mechanism. There is no change to any map outputs. Cheers, Mike -------------- next part -------------- A non-text attachment was scrubbed... Name: logging.patch Type: application/octet-stream Size: 65038 bytes Desc: not available URL: <http://www.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20210319/3a4b8880/attachment-0001.obj>
- Previous message: [mkgmap-dev] Removal of floodblocker generate-sea option
- Next message: [mkgmap-dev] logging improvements
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the mkgmap-dev mailing list