public void GetFileNameReflectsTheFileName(FlushTrigger flushTrigger) { string filename = $"{Guid.NewGuid()}.log"; string logsDirectoryPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "tests", $"logs-{Guid.NewGuid()}"); var listener = new LocalTextFileListener(logsDirectoryPath, flushTrigger) { GetFileName = () => filename }; FlushLogArgs flushLogArgs = CommonTestHelpers.Factory.CreateFlushLogArgs(); listener.OnFlush(flushLogArgs); try { Assert.IsTrue(File.Exists(Path.Combine(logsDirectoryPath, filename))); } finally { if (Directory.Exists(logsDirectoryPath)) { Directory.Delete(logsDirectoryPath, true); } } }
public LocalTextFileListener( string logsDirectoryPath, FlushTrigger flushTrigger, ITextFormatter textFormatter) { if (textFormatter == null) { throw new ArgumentNullException(nameof(textFormatter)); } _logsDirectoryPath = NormalizeLogsDirectoryPath(logsDirectoryPath); if (flushTrigger == FlushTrigger.OnMessage) { _textListener = new MessageTextFileListener(this, textFormatter); } else { _textListener = new FlushTextFileListener(this, textFormatter); } }
private void FlushImpl(FlushTrigger trigger) { try { // protect against multiple parallel calls to flush lock (_flushLock) { while (_queue.Count > 0) { //do not flush less than batch size, if it is triggered by size; it can happen // if we have multiple batches in this loop, and at the end a few items left in the queue if (_queue.Count < _batchSize && trigger == FlushTrigger.Count) { return; } var batch = _queue.DequeueMany(_batchSize); Broadcast(batch); } } //lock } finally { _flushedSinceLastTimer = true; // timer handler will overwrite it _flushing = false; } } //method
public void NullTextFormatterThrowsException(FlushTrigger flushTrigger) { var listener = new LocalTextFileListener("logs", flushTrigger, null); }
public LocalTextFileListener( string logsDirectoryPath, FlushTrigger flushTrigger) : this(logsDirectoryPath, flushTrigger, new TextFormatter()) { }