1
- using System ;
1
+ using MultiSEngine . DataStruct ;
2
+ using System ;
2
3
using System . Collections ;
3
4
using System . IO ;
4
5
using System . Threading . Tasks ;
@@ -10,52 +11,45 @@ public class Logs
10
11
public static string LogPath => Path . Combine ( Environment . CurrentDirectory , "Logs" ) ;
11
12
public static string LogName => Path . Combine ( LogPath , DateTime . Now . ToString ( "yyyy-MM-dd" ) + ".log" ) ;
12
13
public const ConsoleColor DefaultColor = ConsoleColor . Gray ;
13
- public static void Text ( object text , bool save = true )
14
+ public static async void Text ( object text , bool save = true )
14
15
{
15
- LogAndSave ( text , "[Log]" , DefaultColor , save ) ;
16
+ await LogAndSave ( text , "[Log]" , DefaultColor , save ) ;
16
17
}
17
- public static void Info ( object text , bool save = true )
18
+ public static async void Info ( object text , bool save = true )
18
19
{
19
- LogAndSave ( text , "[Info]" , ConsoleColor . Yellow , save ) ;
20
+ await LogAndSave ( text , "[Info]" , ConsoleColor . Yellow , save ) ;
20
21
}
21
- public static void Error ( object text , bool save = true )
22
+ public static async void Error ( object text , bool save = true )
22
23
{
23
- LogAndSave ( text , "[Error]" , ConsoleColor . Red , save ) ;
24
+ await LogAndSave ( text , "[Error]" , ConsoleColor . Red , save ) ;
24
25
}
25
- public static void Warn ( object text , bool save = true )
26
+ public static async void Warn ( object text , bool save = true )
26
27
{
27
- LogAndSave ( text , "[Warn]" , ConsoleColor . DarkYellow , save ) ;
28
+ await LogAndSave ( text , "[Warn]" , ConsoleColor . DarkYellow , save ) ;
28
29
}
29
- public static void Success ( object text , bool save = true )
30
+ public static async void Success ( object text , bool save = true )
30
31
{
31
- LogAndSave ( text , "[Success]" , ConsoleColor . Green , save ) ;
32
+ await LogAndSave ( text , "[Success]" , ConsoleColor . Green , save ) ;
32
33
}
33
- private static Queue LogQueue ;
34
- internal static void SaveLogTask ( )
34
+ private static StreamWriter logSW ;
35
+ internal static void Init ( )
35
36
{
36
- LogQueue ??= new ( ) ;
37
- using var sw = File . AppendText ( LogName ) ;
38
- sw . AutoFlush = true ;
39
- while ( LogQueue != null )
40
- {
41
- while ( LogQueue . Count < 1 )
42
- Task . Delay ( 1 ) . Wait ( ) ;
43
- sw . WriteLine ( LogQueue . Dequeue ( ) ) ;
44
- if ( ! File . Exists ( LogName ) )
45
- {
46
- LogQueue = null ;
47
- return ;
48
- }
49
- }
37
+ if ( ! Directory . Exists ( LogPath ) )
38
+ Directory . CreateDirectory ( LogPath ) ;
39
+ logSW = new ( new FileStream ( LogName , FileMode . OpenOrCreate ) ) ;
50
40
}
51
- public static void LogAndSave ( object message , string prefix = "[Log]" , ConsoleColor color = DefaultColor , bool save = true )
41
+ public static async Task LogAndSave ( object message , string prefix = "[Log]" , ConsoleColor color = DefaultColor , bool save = true )
52
42
{
53
- if ( LogQueue is null )
54
- Task . Run ( SaveLogTask ) ;
43
+ if ( ! File . Exists ( LogName ) )
44
+ {
45
+ logSW ? . Dispose ( ) ;
46
+ logSW = new ( new FileStream ( LogName , FileMode . OpenOrCreate ) ) ; ;
47
+ }
55
48
Console . ForegroundColor = color ;
56
49
Console . WriteLine ( $ "{ prefix } { message } ") ;
57
- if ( save ) LogQueue . Enqueue ( $ "{ DateTime . Now : yyyy-MM-dd-HH:mm:ss} - { prefix } { message } ") ;
58
50
Console . ForegroundColor = DefaultColor ;
51
+ if ( save )
52
+ await logSW . WriteLineAsync ( $ "{ DateTime . Now : yyyy-MM-dd-HH:mm:ss} - { prefix } { message } ") ;
59
53
}
60
54
}
61
55
}
0 commit comments