bloxstrap/Bloxstrap/Helpers/Logger.cs
pizzaboxer a634351c9d Add logging
saves to bloxstrap folder if installed, temp local appdata folder if not installed or uninstalling
2023-02-13 22:05:10 +00:00

51 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Printing;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Bloxstrap.Helpers
{
// https://stackoverflow.com/a/53873141/11852173
public class Logger
{
private readonly SemaphoreSlim _semaphore = new(1, 1);
private readonly FileStream _filestream;
public Logger(string filename)
{
string? directory = Path.GetDirectoryName(filename);
if (directory is not null)
Directory.CreateDirectory(directory);
_filestream = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.Read);
WriteLine($"[Logger::Logger] {App.ProjectName} v{App.Version} - Initialized at {filename}");
}
public async void WriteLine(string message)
{
string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd'T'HH:mm:ss'Z'");
string conout = $"{timestamp} {message}";
byte[] fileout = Encoding.Unicode.GetBytes($"{conout.Replace(Directories.UserProfile, "<UserProfileFolder>")}\r\n");
Debug.WriteLine(conout);
try
{
await _semaphore.WaitAsync();
await _filestream.WriteAsync(fileout);
await _filestream.FlushAsync();
}
finally
{
_semaphore.Release();
}
}
}
}