From 7f5d095f0fde3a802cc46720cd8de8d4828b06d7 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Mon, 15 Aug 2022 19:29:46 +0600 Subject: [PATCH] some changes --- DTLib.Dtsod/Dependencies/linux/x64/kerep.so | Bin 77840 -> 0 bytes .../Dependencies/windows/x64/kerep.dll | Bin 47104 -> 49152 bytes .../Dependencies/windows/x86/kerep.dll | Bin 39936 -> 0 bytes DTLib.Dtsod/V24/KerepTypes/KVPair.cs | 1 + DTLib.Tests/DTLib.Tests.csproj | 12 +++-- DTLib.Tests/Dtsod/TestPInvoke.cs | 4 +- DTLib.Tests/Program.cs | 2 +- DTLib/Logging/BaseLogger.cs | 47 ----------------- DTLib/Logging/ConsoleLogger.cs | 29 +++-------- DTLib/Logging/FileLogger.cs | 49 ++++++++++++++++++ build.sh | 2 +- test.sh | 4 ++ 12 files changed, 72 insertions(+), 78 deletions(-) delete mode 100644 DTLib.Dtsod/Dependencies/linux/x64/kerep.so delete mode 100644 DTLib.Dtsod/Dependencies/windows/x86/kerep.dll delete mode 100644 DTLib/Logging/BaseLogger.cs create mode 100644 DTLib/Logging/FileLogger.cs create mode 100644 test.sh diff --git a/DTLib.Dtsod/Dependencies/linux/x64/kerep.so b/DTLib.Dtsod/Dependencies/linux/x64/kerep.so deleted file mode 100644 index c1abf1cf0aceb20bef278975d9c35f69eb126272..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77840 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ξ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 nMccg~|4p2tB`mTBxx}qpq6+H+<*7nlDpcO9?B diff --git a/DTLib.Dtsod/Dependencies/windows/x64/kerep.dll b/DTLib.Dtsod/Dependencies/windows/x64/kerep.dll index 2286c235a7ecd504f93c7139a20d27874e537e0b..f896d99f201a1c1eb28d5b2df29daea34c972d2b 100644 GIT binary patch delta 20294 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ðXs8; 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 SeWMS$H`3n!^Cj+pz5XBZ9+L+E diff --git a/DTLib.Dtsod/Dependencies/windows/x86/kerep.dll b/DTLib.Dtsod/Dependencies/windows/x86/kerep.dll deleted file mode 100644 index 109371d3ec21821dfa4e473c82caab908f5c2690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39936 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 diff --git a/DTLib.Dtsod/V24/KerepTypes/KVPair.cs b/DTLib.Dtsod/V24/KerepTypes/KVPair.cs index ce2670d..9ad84b5 100644 --- a/DTLib.Dtsod/V24/KerepTypes/KVPair.cs +++ b/DTLib.Dtsod/V24/KerepTypes/KVPair.cs @@ -21,6 +21,7 @@ public struct KVPair public override string ToString() { + throw new NotImplementedException("Marshal.PtrToStringUTF8 can't get non-ascii chars?"); return $"{{{Marshal.PtrToStringUTF8(key)}, {value}}}"; } } \ No newline at end of file diff --git a/DTLib.Tests/DTLib.Tests.csproj b/DTLib.Tests/DTLib.Tests.csproj index 3e5e4e1..55ed785 100644 --- a/DTLib.Tests/DTLib.Tests.csproj +++ b/DTLib.Tests/DTLib.Tests.csproj @@ -20,7 +20,7 @@ - + @@ -28,8 +28,12 @@ - - Always - + + + + + + + diff --git a/DTLib.Tests/Dtsod/TestPInvoke.cs b/DTLib.Tests/Dtsod/TestPInvoke.cs index 211429f..d8f2804 100644 --- a/DTLib.Tests/Dtsod/TestPInvoke.cs +++ b/DTLib.Tests/Dtsod/TestPInvoke.cs @@ -19,7 +19,7 @@ public static class TestPInvoke public static void TestPrintf() { - Info.Log("c", "---------[TestPInvoke/Printf]---------"); + Info.Log("c", "---------[TestPInvoke/Printf]---------", "b", ""); pinvoke_print("ъъ~ 中文"); Info.Log("g", "test completed"); } @@ -29,7 +29,7 @@ public static class TestPInvoke public static unsafe void TestMarshalling() { - Info.Log("c", "---------[TestAutoarr/Print]----------"); + Info.Log("c", "---------[TestAutoarr/TestMarshalling]----------"); string msg = "ъъ~ 中文"; test_marshalling(msg, out KVPair* kptr); KVPair k = *kptr; diff --git a/DTLib.Tests/Program.cs b/DTLib.Tests/Program.cs index bd1bfd1..de48fb1 100644 --- a/DTLib.Tests/Program.cs +++ b/DTLib.Tests/Program.cs @@ -17,7 +17,7 @@ namespace DTLib.Tests; public static class Program { - public static readonly ConsoleLogger Info = new(); + public static readonly ConsoleLogger Info = new("logs", "DTLib.Tests"); public static void Main() { PublicLog.LogEvent += Info.Log; diff --git a/DTLib/Logging/BaseLogger.cs b/DTLib/Logging/BaseLogger.cs deleted file mode 100644 index 354b2d2..0000000 --- a/DTLib/Logging/BaseLogger.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.IO; -using File = DTLib.Filesystem.File; - -namespace DTLib.Logging; - -public abstract class BaseLogger : IDisposable -{ - public BaseLogger() { } - public BaseLogger(string logfile) - { - WriteToFile=true; - LogfileName = logfile; - LogfileStream = File.OpenWrite(logfile); - } - - public BaseLogger(string dir, string programName) - : this($"{dir}\\{programName}_{DateTime.Now}.log".Replace(':', '-').Replace(' ', '_')) { } - - public string LogfileName { get; protected set; } - public FileStream LogfileStream { get; protected set; } - - protected readonly object _statelocker = new(); - - private bool _isEnabled=true; - public bool IsEnabled - { - get { lock (_statelocker) return _isEnabled; } - set { lock (_statelocker) _isEnabled = value; } - } - - private bool _writeToFile; - public bool WriteToFile - { - get { lock (_statelocker) return _writeToFile; } - set { lock (_statelocker) _writeToFile = value; } - } - - public abstract void Log(params string[] msg); - - public virtual void Dispose() - { - LogfileStream?.Flush(); - LogfileStream?.Close(); - } - - ~BaseLogger() => Dispose(); -} diff --git a/DTLib/Logging/ConsoleLogger.cs b/DTLib/Logging/ConsoleLogger.cs index 74c8118..35933ac 100644 --- a/DTLib/Logging/ConsoleLogger.cs +++ b/DTLib/Logging/ConsoleLogger.cs @@ -1,11 +1,8 @@ -using System.Globalization; - -namespace DTLib.Logging; +namespace DTLib.Logging; // вывод лога в консоль и файл -public class ConsoleLogger : BaseLogger +public class ConsoleLogger : FileLogger { - public ConsoleLogger() : base() {} public ConsoleLogger(string logfile) : base(logfile){} public ConsoleLogger(string dir, string programName) : base(dir, programName) {} @@ -14,9 +11,11 @@ public class ConsoleLogger : BaseLogger public override void Log(params string[] msg) { - if (!IsEnabled) return; + // write to file + base.Log(msg); + // append timestamp var strb = new StringBuilder(); - strb.Append('[').Append(DateTime.Now.ToString(CultureInfo.InvariantCulture)).Append("]: "); + strb.Append('[').Append(LastLogMessageTime).Append("]: "); int index = msg.Length == 1 ? 0 : 1; strb.Append(msg[index]); msg[index] = strb.ToString(); @@ -26,21 +25,5 @@ public class ConsoleLogger : BaseLogger ColoredConsole.Write(msg); Console.WriteLine(); } - // write to file - if (!WriteToFile) return; - if (msg.Length == 1) - lock (LogfileStream) - { - LogfileStream.Write(msg[0].ToBytes()); - LogfileStream.WriteByte('\n'.ToByte()); - } - else - { - for (ushort i = 3; i < msg.Length; i+=2) - strb.Append(msg[i]); - strb.Append('\n'); - lock (LogfileStream) - LogfileStream.Write(strb.ToString().ToBytes()); - } } } diff --git a/DTLib/Logging/FileLogger.cs b/DTLib/Logging/FileLogger.cs new file mode 100644 index 0000000..0cc3905 --- /dev/null +++ b/DTLib/Logging/FileLogger.cs @@ -0,0 +1,49 @@ +using System.Globalization; + +namespace DTLib.Logging; + +public class FileLogger : IDisposable +{ + public FileLogger(string logfile) + { + LogfileName = logfile; + LogfileStream = File.OpenAppend(logfile); + } + + public FileLogger(string dir, string programName) + : this($"{dir}\\{programName}_{DateTime.Now}.log".Replace(':', '-').Replace(' ', '_')) { } + + public string LogfileName { get; protected set; } + public System.IO.FileStream LogfileStream { get; protected set; } + protected string LastLogMessageTime; + + + public virtual void Log(params string[] msg) + { + lock (LogfileStream) + { + LastLogMessageTime = DateTime.Now.ToString(CultureInfo.InvariantCulture); + LogfileStream.WriteByte('['.ToByte()); + LogfileStream.Write(LastLogMessageTime.ToBytes()); + LogfileStream.Write("]: ".ToBytes()); + if (msg.Length == 1) + LogfileStream.Write(msg[0].ToBytes()); + else + { + var strb = new StringBuilder(); + for (ushort i = 1; i < msg.Length; i += 2) + strb.Append(msg[i]); + LogfileStream.Write(strb.ToString().ToBytes()); + } + LogfileStream.WriteByte('\n'.ToByte()); + } + } + + public virtual void Dispose() + { + LogfileStream?.Flush(); + LogfileStream?.Close(); + } + + ~FileLogger() => Dispose(); +} diff --git a/build.sh b/build.sh index a478f5f..55390ab 100644 --- a/build.sh +++ b/build.sh @@ -3,4 +3,4 @@ dotnet build -c Release dotnet build -c Debug rm -rf bin mkdir bin -cp -rv DTLib.*/bin/* bin/ +cp -rv DTLib.Tests/bin/* bin/ diff --git a/test.sh b/test.sh new file mode 100644 index 0000000..d4b456f --- /dev/null +++ b/test.sh @@ -0,0 +1,4 @@ +printf " +first line +second line +"