<feed xmlns='http://www.w3.org/2005/Atom'>
<title>WebStat analyser/test, branch webstat-0.3</title>
<subtitle>WebStat web site access analyser</subtitle>
<id>https://git.randomdan.homeip.net/repo/webstat/atom?h=webstat-0.3</id>
<link rel='self' href='https://git.randomdan.homeip.net/repo/webstat/atom?h=webstat-0.3'/>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/'/>
<updated>2026-03-25T18:44:15Z</updated>
<entry>
<title>Revise stats and add signal handlers to log them and reset them</title>
<updated>2026-03-25T18:44:15Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-03-25T18:44:15Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=426a6a3d9309e3f7cf5fc89d6a687c7895785cc3'/>
<id>urn:sha1:426a6a3d9309e3f7cf5fc89d6a687c7895785cc3</id>
<content type='text'>
Also logs them on main loop exit.
</content>
</entry>
<entry>
<title>Add missing -Wshadow</title>
<updated>2026-03-22T18:03:14Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-03-22T17:02:40Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=d92816a5f55cea9b67b7aab306eb1109af6dcbbe'/>
<id>urn:sha1:d92816a5f55cea9b67b7aab306eb1109af6dcbbe</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add logging :-o</title>
<updated>2026-03-20T23:48:32Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-03-20T23:48:32Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=05c47ab65e73b16887b7c7a1eb31acf6d364ef41'/>
<id>urn:sha1:05c47ab65e73b16887b7c7a1eb31acf6d364ef41</id>
<content type='text'>
Adds virtual log function, real implementation writes to syslog.
Test implementation writes to BOOST_TEST_MESSAGE, perf implementation
discards.
Replaces existing prints to stderr and adds logs to all key points.
</content>
</entry>
<entry>
<title>Insert log entries in batches</title>
<updated>2026-03-20T02:23:08Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-03-20T02:17:04Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=0f5a0a8e2d43774288d4d6ea747278ca6e085a2a'/>
<id>urn:sha1:0f5a0a8e2d43774288d4d6ea747278ca6e085a2a</id>
<content type='text'>
Store log lines in memory until threshold is reach or idle occurs, then
insert all the lines in a single transaction. Save points handle the
case of insertion errors. On success the queue is cleared.
Parked lines also saved in bulk, only necessary if queued lines could
not be inserted on shutdown, else the queue simply grows until ability
to insert is restored. Importing parked lines just adds them to the
queue and the normal process then follows.
</content>
</entry>
<entry>
<title>Gracefully handle SIGTERM</title>
<updated>2026-03-19T12:33:48Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-03-19T12:33:48Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=8c6fecd356003309f8eebec30374344272ca6072'/>
<id>urn:sha1:8c6fecd356003309f8eebec30374344272ca6072</id>
<content type='text'>
Apache sends SIGTERM to the logger process to it shutdown. Honestly I
thought it would just close stdin and I should have checked.
</content>
</entry>
<entry>
<title>Use std::future over std::thread for background jobs</title>
<updated>2026-03-17T17:33:14Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-03-17T17:33:14Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=ae0ee6bbfb4dcd1f112876d0e7e5b3bcabdfb002'/>
<id>urn:sha1:ae0ee6bbfb4dcd1f112876d0e7e5b3bcabdfb002</id>
<content type='text'>
Easier checking if a job has completed [successfully] and reseting state
for the next time.
</content>
</entry>
<entry>
<title>Execute jobs even when processing incoming logs</title>
<updated>2026-03-17T11:48:34Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-03-17T11:48:34Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=d2ecb7f49c3f3b60e3d1f297fd033071a02cfa9a'/>
<id>urn:sha1:d2ecb7f49c3f3b60e3d1f297fd033071a02cfa9a</id>
<content type='text'>
Jobs run on background threads now, so we can happily run them even when
we're busy.
</content>
</entry>
<entry>
<title>Run jobs on a background thread</title>
<updated>2026-03-17T11:11:14Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-03-17T11:11:14Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=0e3c2e8dd462a7d56f8b61e15c8cf10681898a1f'/>
<id>urn:sha1:0e3c2e8dd462a7d56f8b61e15c8cf10681898a1f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Process new field, content-type, in input stream</title>
<updated>2026-01-18T01:36:06Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-01-18T01:36:06Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=04acfa679fd846ac829ded5562093b3766c85154'/>
<id>urn:sha1:04acfa679fd846ac829ded5562093b3766c85154</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Attempt to save uninsertable log lines to the entities table</title>
<updated>2026-01-17T20:33:37Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-01-17T19:40:47Z</published>
<link rel='alternate' type='text/html' href='https://git.randomdan.homeip.net/repo/webstat/commit/?id=34051da2f27ffa40d0b6d20ae891a497fe73bfe5'/>
<id>urn:sha1:34051da2f27ffa40d0b6d20ae891a497fe73bfe5</id>
<content type='text'>
If that fails, we still park them as before, such as when the DB is
unavailable. Those which are saved as entities require investigation why
they couldn't be saved, much like UnparsableLines.
</content>
</entry>
</feed>
