@@ -29,8 +29,13 @@ public class LogfileReader : IAutoLogLineColumnizerCallback, IDisposable
2929 private ReaderWriterLock _bufferListLock ;
3030 private bool _contentDeleted ;
3131 private int _currLineCount ;
32+
33+ private readonly int _maximumLineLength ;
34+
3235 private ReaderWriterLock _disposeLock ;
36+
3337 private EncodingOptions _encodingOptions ;
38+
3439 private long _fileLength ;
3540 private Task _garbageCollectorTask ;
3641 private Task _monitorTask ;
@@ -50,27 +55,34 @@ public class LogfileReader : IAutoLogLineColumnizerCallback, IDisposable
5055 #region cTor
5156
5257 /// Public constructor for single file.
53- public LogfileReader ( string fileName , EncodingOptions encodingOptions , bool multiFile , int bufferCount , int linesPerBuffer , MultiFileOptions multiFileOptions , bool useNewReader , IPluginRegistry pluginRegistry )
54- : this ( [ fileName ] , encodingOptions , multiFile , bufferCount , linesPerBuffer , multiFileOptions , useNewReader , pluginRegistry )
58+ public LogfileReader ( string fileName , EncodingOptions encodingOptions , bool multiFile , int bufferCount , int linesPerBuffer , MultiFileOptions multiFileOptions , bool useNewReader , IPluginRegistry pluginRegistry , int maximumLineLength )
59+ : this ( [ fileName ] , encodingOptions , multiFile , bufferCount , linesPerBuffer , multiFileOptions , useNewReader , pluginRegistry , maximumLineLength )
5560 {
5661 }
5762
5863 /// Public constructor for multiple files.
59- public LogfileReader ( string [ ] fileNames , EncodingOptions encodingOptions , int bufferCount , int linesPerBuffer , MultiFileOptions multiFileOptions , bool useNewReader , IPluginRegistry pluginRegistry )
60- : this ( fileNames , encodingOptions , true , bufferCount , linesPerBuffer , multiFileOptions , useNewReader , pluginRegistry )
64+ public LogfileReader ( string [ ] fileNames , EncodingOptions encodingOptions , int bufferCount , int linesPerBuffer , MultiFileOptions multiFileOptions , bool useNewReader , IPluginRegistry pluginRegistry , int maximumLineLength )
65+ : this ( fileNames , encodingOptions , true , bufferCount , linesPerBuffer , multiFileOptions , useNewReader , pluginRegistry , maximumLineLength )
6166 {
6267 // In this overload, we assume multiFile is always true.
6368 }
6469
6570 // Single private constructor that contains the common initialization logic.
66- private LogfileReader ( string [ ] fileNames , EncodingOptions encodingOptions , bool multiFile , int bufferCount , int linesPerBuffer , MultiFileOptions multiFileOptions , bool useNewReader , IPluginRegistry pluginRegistry )
71+ private LogfileReader ( string [ ] fileNames , EncodingOptions encodingOptions , bool multiFile , int bufferCount , int linesPerBuffer , MultiFileOptions multiFileOptions , bool useNewReader , IPluginRegistry pluginRegistry , int maximumLineLength )
6772 {
6873 // Validate input: at least one file must be provided.
6974 if ( fileNames == null || fileNames . Length < 1 )
7075 {
7176 throw new ArgumentException ( "Must provide at least one file." , nameof ( fileNames ) ) ;
7277 }
7378
79+ //Set default maximum line length if invalid value provided.
80+ if ( maximumLineLength <= 0 )
81+ {
82+ maximumLineLength = 500 ;
83+ }
84+
85+ _maximumLineLength = maximumLineLength ;
7486 _useNewReader = useNewReader ;
7587 EncodingOptions = encodingOptions ;
7688 _max_buffers = bufferCount ;
@@ -1535,9 +1547,12 @@ private void FileChanged ()
15351547
15361548 private void FireChangeEvent ( )
15371549 {
1538- LogEventArgs args = new ( ) ;
1539- args . PrevFileSize = FileSize ;
1540- args . PrevLineCount = LineCount ;
1550+ LogEventArgs args = new ( )
1551+ {
1552+ PrevFileSize = FileSize ,
1553+ PrevLineCount = LineCount
1554+ } ;
1555+
15411556 var newSize = _fileLength ;
15421557 if ( newSize < FileSize || _isDeleted )
15431558 {
@@ -1604,12 +1619,9 @@ private ILogStreamReader GetLogStreamReader (Stream stream, EncodingOptions enco
16041619
16051620 private ILogStreamReader CreateLogStreamReader ( Stream stream , EncodingOptions encodingOptions , bool useSystemReader )
16061621 {
1607- if ( useSystemReader )
1608- {
1609- return new PositionAwareStreamReaderSystem ( stream , encodingOptions ) ;
1610- }
1611-
1612- return new PositionAwareStreamReaderLegacy ( stream , encodingOptions ) ;
1622+ return useSystemReader
1623+ ? new PositionAwareStreamReaderSystem ( stream , encodingOptions , _maximumLineLength )
1624+ : new PositionAwareStreamReaderLegacy ( stream , encodingOptions , _maximumLineLength ) ;
16131625 }
16141626
16151627 private bool ReadLine ( ILogStreamReader reader , int lineNum , int realLineNum , out string outLine )
0 commit comments