PEPTool/AV-ToolV3/LogFile.cs
2025-10-08 10:11:18 +02:00

124 lines
5.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PEP_Tool
{
public static class LogFile
{
public static void WriteLine(string Text)
{
Debug.WriteLine(DateTime.Now + " v" + Properties.Settings.Default.Version + " " + Text);
try
{
byte[] t = Encoding.ASCII.GetBytes(Text);
if (!Directory.Exists(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"))) Directory.CreateDirectory(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"));
//using (var fs = Writer.WaitForFile(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite | FileShare.Delete))
//{
// fs.WriteAsync(t, (int)fs.Length, t.Count());
//}
WaitForFile(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
}
catch (Exception)
{
}
}
public static void WriteLine(double Text)
{
Debug.WriteLine(DateTime.Now + " v" + Properties.Settings.Default.Version + " " + Text);
try
{
if (!Directory.Exists(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"))) Directory.CreateDirectory(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"));
WaitForFile(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
}
catch (Exception)
{
}
}
public static void WriteLine(int Text)
{
Debug.WriteLine(DateTime.Now + " v" + Properties.Settings.Default.Version + " " + Text);
try
{
if (!Directory.Exists(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"))) Directory.CreateDirectory(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"));
WaitForFile(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
}
catch (Exception)
{
}
}
public static void WriteLine(bool Text)
{
Debug.WriteLine(DateTime.Now + " v" + Properties.Settings.Default.Version + " " + Text);
try
{
//if (!Directory.Exists(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"))) Directory.CreateDirectory(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"));
//WaitForFile(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
SendLogToDB(Text.ToString());
}
catch (Exception)
{
}
}
public static void WriteLine(Exception Text)
{
Debug.WriteLine(DateTime.Now + " v" + Properties.Settings.Default.Version + " " + Text);
try
{
//if (!Directory.Exists(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"))) Directory.CreateDirectory(Path.GetDirectoryName(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt"));
//WaitForFile(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\PEP\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
SendLogToDB(Text.ToString());
}
catch (Exception)
{
}
}
private static void SendLogToDB(string Text)
{
SQL.WriteSQL($"INSERT INTO ProjektDB.errorLog (User, Message) VALUES ('{Environment.UserName}','{"1: " + Text}')");
}
public static bool IsFileReady(string filename)
{
// If the file can be opened for exclusive access it means that the file
// is no longer locked by another process.
try
{
using (FileStream inputStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.None))
return inputStream.Length > 0;
}
catch (Exception)
{
return false;
}
}
public static void WaitForFile(string filename, string Text)
{
//This will lock the execution until the file is ready
//TODO: Add some logic to make it async and cancelable
while (!IsFileReady(filename)) { Task.Delay(20); }
try
{
File.AppendAllText(filename, Text);
}
catch (Exception)
{
WaitForFile(filename, Text);
}
}
}
}