namespace Pro
{
class ErrorLog
{
public ErrorLog(RenderWindow app)
{
startTime = DateTime.Now.ToString("yyyyMMddHHmm");
outFile = @"data\runtime\" + startTime + ".log";
errFile = @"data\runtime\" + startTime + ".err";
try
{
OutputStream = new StreamWriter(outFile);
ErrorStream = new StreamWriter(errFile);
}
catch (Exception e)
{
Console.Error.WriteLine(e);
MessageBox.Show(e.Message);
Environment.Exit(1);
}
var info = new ComputerInfo();
Console.SetOut(OutputStream);
Console.SetError(ErrorStream);
Console.WriteLine("Start Time: {0}", startTime);
Console.WriteLine("Platform: {0}", info.OSFullName);
Console.WriteLine("Available Memory: {0}", info.AvailablePhysicalMemory);
ReportApplicationData(app);
}
~ErrorLog()
{
if (wereErrors)
{
var msg = string.Format("There were some runtime errors. Kindly see {0} for the error messages and {1} for the runtime log",
errFile, outFile);
DisplayMessage(msg);
}
Console.Error.Close();
Console.Out.Close();
}
public void ReportApplicationData(RenderWindow app)
{
this.app = app;
Console.WriteLine("Screen Width = {0}, Height = {1}, Depth = {2}",
app.Width, app.Height, app.Settings.DepthBits);
}
public void DisplayMessage(string msg)
{
Console.WriteLine("Application Message : '{0}'", msg);
MessageBox.Show(msg);
}
public void DisplayError(bool fatal, string format, params object[] arg)
{
Console.Error.WriteLine(format, arg);
wereErrors = true;
if (fatal) app.Close();
}
public TextWriter ErrorStream
{
get;
private set;
}
public TextWriter OutputStream
{
get;
set;
}
bool wereErrors = false;
string startTime;
string errFile;
string outFile;
RenderWindow app; // SFML RenderWindow
}
}
ErrorLog
我在Main
方法中创建了一个实例。但是,出于某种原因,即使创建了.log
and文件,也没有任何内容被写入。.err
我所看到的只是两个大小为 0 字节的空文件,其中没有写入任何文本。