Skip to content

Commit 7ab3746

Browse files
committed
Better support for detailed logging
1 parent b8b1d62 commit 7ab3746

File tree

3 files changed

+15
-37
lines changed

3 files changed

+15
-37
lines changed

src/Examine.Lucene/LoggingInfoStream.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,21 @@ namespace Examine.Lucene
55
{
66
internal class LoggingInfoStream<T> : InfoStream
77
{
8-
public LoggingInfoStream(ILogger<T> logger)
8+
private readonly LogLevel _logLevel;
9+
10+
public LoggingInfoStream(ILogger<T> logger, LogLevel logLevel)
911
{
1012
Logger = logger;
13+
_logLevel = logLevel;
1114
}
1215

1316
public ILogger<T> Logger { get; }
1417

15-
public override bool IsEnabled(string component) => Logger.IsEnabled(LogLevel.Debug);
18+
public override bool IsEnabled(string component) => Logger.IsEnabled(_logLevel);
19+
1620
public override void Message(string component, string message)
1721
{
18-
if (Logger.IsEnabled(LogLevel.Debug))
22+
if (Logger.IsEnabled(_logLevel))
1923
{
2024
Logger.LogDebug("{Component} - {Message}", component, message);
2125
}

src/Examine.Lucene/LoggingReplicationClient.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using Lucene.Net.Replicator;
33
using Microsoft.Extensions.Logging;
44

@@ -27,7 +27,8 @@ protected override void HandleUpdateException(Exception exception)
2727

2828
private class CustomLoggingInfoStream : LoggingInfoStream<LoggingReplicationClient>
2929
{
30-
public CustomLoggingInfoStream(ILogger<LoggingReplicationClient> logger) : base(logger)
30+
public CustomLoggingInfoStream(ILogger<LoggingReplicationClient> logger)
31+
: base(logger, LogLevel.Debug)
3132
{
3233
}
3334

@@ -36,7 +37,7 @@ public override void Message(string component, string message)
3637
if (Logger.IsEnabled(LogLevel.Debug))
3738
{
3839
// don't log this, it means there is no session
39-
if (!message.EndsWith("="))
40+
if (!message.EndsWith('='))
4041
{
4142
base.Message(component, message);
4243
}

src/Examine.Lucene/Providers/LuceneIndex.cs

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,6 @@ internal LuceneIndex(
101101
private ControlledRealTimeReopenThread<IndexSearcher> _nrtReopenThread;
102102
private readonly ILogger<LuceneIndex> _logger;
103103
private readonly Lazy<Directory> _directory;
104-
#if FULLDEBUG
105-
private readonly FileStream _logOutput;
106-
#endif
107104
private bool _isDirectoryExternallyManaged = false;
108105
private bool _disposedValue;
109106
private readonly IndexCommiter _committer;
@@ -999,6 +996,7 @@ private IndexWriter CreateIndexWriterWithOpenMode(Directory d, OpenMode openMode
999996
{
1000997
throw new ArgumentNullException(nameof(d));
1001998
}
999+
10021000
var writerConfig = new IndexWriterConfig(LuceneInfo.CurrentVersion, FieldAnalyzer)
10031001
{
10041002
IndexDeletionPolicy = _options.IndexDeletionPolicy ?? new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy()),
@@ -1012,39 +1010,17 @@ private IndexWriter CreateIndexWriterWithOpenMode(Directory d, OpenMode openMode
10121010
ForceMergeDeletesPctAllowed = 10.0f,
10131011
MaxMergedSegmentMB = 5000
10141012
},
1015-
#if FULLDEBUG
1016-
1017-
//If we want to enable logging of lucene output....
1018-
//It is also possible to set a default InfoStream on the static IndexWriter class
1019-
InfoStream =
1020-
1021-
_logOutput?.Close();
1022-
if (LuceneIndexFolder != null)
1023-
{
1024-
try
1025-
{
1026-
System.IO.Directory.CreateDirectory(LuceneIndexFolder.FullName);
1027-
_logOutput = new FileStream(Path.Combine(LuceneIndexFolder.FullName, DateTime.UtcNow.ToString("yyyy-MM-dd") + ".log"), FileMode.Append);
1028-
1029-
1030-
}
1031-
catch (Exception ex)
1032-
{
1033-
//if an exception is thrown here we won't worry about it, it will mean we cannot create the log file
1034-
}
1035-
}
1036-
1037-
#endif
1038-
10391013
MergeScheduler = new ErrorLoggingConcurrentMergeScheduler(Name,
10401014
(s, e) => OnIndexingError(new IndexingErrorEventArgs(this, s, "-1", e)))
10411015
};
10421016

1017+
writerConfig.SetInfoStream(new LoggingInfoStream<LuceneIndex>(_logger, LogLevel.Trace));
1018+
10431019
if (_options.NrtEnabled)
10441020
{
10451021
// With NRT, we should apparently use this but there is no real implementation of it!?
10461022
// https://stackoverflow.com/questions/12271614/lucene-net-indexwriter-setmergedsegmentwarmer
1047-
writerConfig.MergedSegmentWarmer = new SimpleMergedSegmentWarmer(new LoggingInfoStream<LuceneIndex>(_logger));
1023+
writerConfig.MergedSegmentWarmer = new SimpleMergedSegmentWarmer(new LoggingInfoStream<LuceneIndex>(_logger, LogLevel.Debug));
10481024
}
10491025

10501026
var writer = new IndexWriter(d, writerConfig);
@@ -1382,9 +1358,6 @@ protected virtual void Dispose(bool disposing)
13821358
}
13831359

13841360
_cancellationTokenSource.Dispose();
1385-
#if FULLDEBUG
1386-
_logOutput?.Close();
1387-
#endif
13881361
_fieldAnalyzer?.Dispose();
13891362
if (!object.ReferenceEquals(_fieldAnalyzer, DefaultAnalyzer))
13901363
{

0 commit comments

Comments
 (0)