1- using System . Collections . Concurrent ;
1+ using Microsoft . Extensions . Logging ;
2+ using Microsoft . Extensions . Logging . Abstractions ;
3+ using System . Collections . Concurrent ;
24using System . Diagnostics ;
5+ using CompactGUI . Logging . Core ;
36
47namespace CompactGUI . Core ;
58
@@ -12,18 +15,22 @@ public class Analyser
1215 public bool ContainsCompressedFiles { get ; set ; }
1316 public List < AnalysedFileDetails > FileCompressionDetailsList { get ; set ; } = new List < AnalysedFileDetails > ( ) ;
1417
18+ private ILogger < Analyser > _logger ;
1519
16- public Analyser ( string folder )
20+ public Analyser ( string folder , ILogger < Analyser > logger )
1721 {
1822 FolderName = folder ;
1923 UncompressedBytes = 0 ;
2024 CompressedBytes = 0 ;
2125 ContainsCompressedFiles = false ;
26+ _logger = logger ;
2227 }
2328
2429
2530 public async Task < Boolean ? > AnalyseFolder ( CancellationToken cancellationToken )
2631 {
32+ AnalyserLog . StartingAnalysis ( _logger , FolderName ) ;
33+ Stopwatch sw = Stopwatch . StartNew ( ) ;
2734 try
2835 {
2936 var allFiles = await Task . Run ( ( ) => Directory . EnumerateFiles ( FolderName , "*" , new EnumerationOptions { RecurseSubdirectories = true , IgnoreInaccessible = true , AttributesToSkip = FileAttributes . ReparsePoint } ) . AsShortPathNames ( ) , cancellationToken ) . ConfigureAwait ( false ) ;
@@ -39,22 +46,25 @@ public Analyser(string folder)
3946 ContainsCompressedFiles = fileDetails . Any ( f => f . CompressionMode != WOFCompressionAlgorithm . NO_COMPRESSION ) ;
4047
4148 FileCompressionDetailsList = fileDetails ;
42-
43- return ContainsCompressedFiles ;
4449 }
4550 catch ( Exception ex )
4651 {
47- Debug . WriteLine ( ex . Message ) ;
52+ AnalyserLog . AnalysisFailed ( _logger , FolderName , ex . Message ) ;
4853 return null ;
4954 }
55+ finally { sw . Stop ( ) ; }
56+
57+ AnalyserLog . AnalysisCompleted ( _logger , FolderName , Math . Round ( sw . Elapsed . TotalSeconds , 3 ) , CompressedBytes , UncompressedBytes , ContainsCompressedFiles ) ;
5058
59+ return ContainsCompressedFiles ;
5160
5261
5362 }
5463
5564
5665 private AnalysedFileDetails ? AnalyseFile ( string file )
5766 {
67+ AnalyserLog . ProcessingFile ( _logger , file ) ;
5868 try
5969 {
6070 FileInfo fileInfo = new FileInfo ( file ) ;
@@ -67,8 +77,9 @@ public Analyser(string folder)
6777
6878 return new AnalysedFileDetails { FileName = file , CompressedSize = compressedSize , UncompressedSize = uncompressedSize , CompressionMode = compressionMode , FileInfo = fileInfo } ;
6979 }
70- catch ( IOException )
80+ catch ( IOException ex )
7181 {
82+ AnalyserLog . ProcessingFileFailed ( _logger , file , ex . Message ) ;
7283 return null ;
7384 }
7485 }
0 commit comments