diff --git a/TimberWinR/Outputs/Redis.cs b/TimberWinR/Outputs/Redis.cs index 3204c01..6ee19aa 100644 --- a/TimberWinR/Outputs/Redis.cs +++ b/TimberWinR/Outputs/Redis.cs @@ -80,6 +80,8 @@ namespace TimberWinR.Outputs new JProperty("sent_messages", _sentMessages), new JProperty("queued_messages", _jsonQueue.Count), new JProperty("port", _port), + new JProperty("maxQueueSize", _maxQueueSize), + new JProperty("overflowDiscardOldest", _queueOverflowDiscardOldest), new JProperty("interval", _interval), new JProperty("threads", _numThreads), new JProperty("batchcount", _batchCount), @@ -119,7 +121,7 @@ namespace TimberWinR.Outputs public override string ToString() { - return string.Format("Redis Host: {0} Port: {1}, Threads: {2}, Interval: {3}, BatchCount: {4}", string.Join(",", _redisHosts) , _port, _numThreads, _interval, _batchCount); + return string.Format("Redis Host: {0} Port: {1}, Threads: {2}, Interval: {3}, BatchCount: {4}", string.Join(",", _redisHosts), _port, _numThreads, _interval, _batchCount); } /// @@ -145,11 +147,17 @@ namespace TimberWinR.Outputs // then remove as many as necessary to get us under our limit if (_queueOverflowDiscardOldest) { + LogManager.GetCurrentClassLogger() + .Warn("Overflow discarding oldest {0} messages", _jsonQueue.Count - _maxQueueSize + 1); + _jsonQueue.RemoveRange(0, (_jsonQueue.Count - _maxQueueSize) + 1); } // Otherwise we're in a "discard newest" mode, and this is the newest message, so just ignore it else { + LogManager.GetCurrentClassLogger() + .Warn("Overflow discarding newest message: {0}", message); + return; } } diff --git a/TimberWinR/mdocs/RedisOutput.md b/TimberWinR/mdocs/RedisOutput.md index 939431c..7c659ca 100644 --- a/TimberWinR/mdocs/RedisOutput.md +++ b/TimberWinR/mdocs/RedisOutput.md @@ -9,10 +9,11 @@ The following parameters are allowed when configuring the Redis output. | :-------------|:---------|:------------------------------------------------------------| :--------------------------- | :-- | | *threads* | string | Location of log files(s) to monitor | Number of worker theads to send messages | 1 | | *interval* | integer | Interval in milliseconds to sleep during batch sends | Interval | 5000 | -| *batch_count* | integer | The number of events to send in a single transaction | | 10 | | *index* | string | The name of the redis list | logstash index name | logstash | | *host* | [string] | The hostname(s) of your Redis server(s) | IP or DNS name | | | *port* | integer | Redis port number | This port must be open | 6379 | +| *max_queue_size* | integer | Maximum redis queue depth | | 50000 | +| *queue_overflow_discard_oldest* | bool | If true, discard oldest messages when max_queue_size reached otherwise discard newest | | false | Example Input: ```json