Add internal Logging support (#3)

* Add internal Logging support

Add class Logging.
Replace all Console.WriteLine() to looks better.
Add informations inside Windows Titles.

* Revert "Add internal Logging support"

This reverts commit 275d363aaf.

* Add internal Logging support

Add Logging Class.
Replace all Console.WriteLine() to looks better.
Add debug informations of IpcMessage.
Add informations inside Windows Titles.

* Add internal Logging support2

Add Logging Class.
Replace all Console.WriteLine() to looks better.
Add debug informations of IpcMessage.
Add informations inside Windows Titles.
This commit is contained in:
Ac_K 2018-02-09 01:43:22 +01:00 committed by gdkchan
parent ae91da5b60
commit 9e8f02b66d
7 changed files with 150 additions and 17 deletions

View file

@ -352,6 +352,8 @@ void main(void) {
{ {
GL.Viewport(0, 0, 1280, 720); GL.Viewport(0, 0, 1280, 720);
Title = $"Ryujinx Screen - (Vsync: {VSync} - FPS: {1f / e.Time:0})";
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
RenderFb(); RenderFb();

View file

@ -9,6 +9,8 @@ namespace Ryujinx
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
Console.Title = "Ryujinx Console";
IGalRenderer Renderer = new OpenGLRenderer(); IGalRenderer Renderer = new OpenGLRenderer();
Switch Ns = new Switch(Renderer); Switch Ns = new Switch(Renderer);
@ -21,27 +23,30 @@ namespace Ryujinx
if (RomFsFiles.Length > 0) if (RomFsFiles.Length > 0)
{ {
Console.WriteLine("Loading as cart with RomFS."); Logging.Info("Loading as cart with RomFS.");
Console.Title += " - Cart (with RomFS) - " + args[0];
Ns.Os.LoadCart(args[0], RomFsFiles[0]); Ns.Os.LoadCart(args[0], RomFsFiles[0]);
} }
else else
{ {
Console.WriteLine("Loading as cart WITHOUT RomFS."); Logging.Info("Loading as cart WITHOUT RomFS.");
Console.Title += " - Cart (without RomFS) - " + args[0];
Ns.Os.LoadCart(args[0]); Ns.Os.LoadCart(args[0]);
} }
} }
else if (File.Exists(args[0])) else if (File.Exists(args[0]))
{ {
Console.WriteLine("Loading as homebrew."); Logging.Info("Loading as homebrew.");
Console.Title += " - Homebrew - " + args[0];
Ns.Os.LoadProgram(args[0]); Ns.Os.LoadProgram(args[0]);
} }
} }
else else
{ {
Console.WriteLine("Please specify the folder with the NSOs/IStorage or a NSO/NRO."); Logging.Error("Please specify the folder with the NSOs/IStorage or a NSO/NRO.");
} }
using (GLScreen Screen = new GLScreen(Ns, Renderer)) using (GLScreen Screen = new GLScreen(Ns, Renderer))

128
Ryujinx/Logging.cs Normal file
View file

@ -0,0 +1,128 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Text;
namespace Ryujinx
{
public static class Logging
{
private static Stopwatch ExecutionTime = new Stopwatch();
private static string LogFileName = "Ryujinx.log";
public static bool EnableInfo = true;
public static bool EnableTrace = true;
public static bool EnableDebug = true;
public static bool EnableWarn = true;
public static bool EnableError = true;
public static bool EnableFatal = true;
public static bool EnableLogFile = false;
static Logging()
{
ExecutionTime.Start();
if (File.Exists(LogFileName)) File.Delete(LogFileName);
}
public static string GetExecutionTime()
{
return ExecutionTime.ElapsedMilliseconds.ToString().PadLeft(8, '0') + "ms";
}
private static void LogFile(string Message)
{
if (EnableLogFile)
{
using (StreamWriter Writer = File.AppendText(LogFileName))
{
Writer.WriteLine(Message);
}
}
}
public static void Info(string Message)
{
if (EnableInfo)
{
string Text = $"{GetExecutionTime()} | INFO > {Message}";
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
Console.ResetColor();
LogFile(Text);
}
}
public static void Trace(string Message)
{
if (EnableTrace)
{
string Text = $"{GetExecutionTime()} | TRACE > {Message}";
Console.ForegroundColor = ConsoleColor.DarkGray;
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
Console.ResetColor();
LogFile(Text);
}
}
public static void Debug(string Message)
{
if (EnableDebug)
{
string Text = $"{GetExecutionTime()} | DEBUG > {Message}";
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
Console.ResetColor();
LogFile(Text);
}
}
public static void Warn(string Message)
{
if (EnableWarn)
{
string Text = $"{GetExecutionTime()} | WARN > {Message}";
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
Console.ResetColor();
LogFile(Text);
}
}
public static void Error(string Message)
{
if (EnableError)
{
string Text = $"{GetExecutionTime()} | ERROR > {Message}";
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
Console.ResetColor();
LogFile(Text);
}
}
public static void Fatal(string Message)
{
if (EnableFatal)
{
string Text = $"{GetExecutionTime()} | FATAL > {Message}";
Console.ForegroundColor = ConsoleColor.Magenta;
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
Console.ResetColor();
LogFile(Text);
}
}
}
}

View file

@ -262,6 +262,8 @@ namespace Ryujinx.OsHle.Ipc
} }
} }
Logging.Debug($"IpcMessage: {DbgServiceName}");
if (ProcReq != null) if (ProcReq != null)
{ {
using (MemoryStream ResMS = new MemoryStream()) using (MemoryStream ResMS = new MemoryStream())

View file

@ -22,7 +22,7 @@ namespace Ryujinx.OsHle.Objects
//IAudioOut //IAudioOut
private static AudioOutState State = AudioOutState.Stopped; private static AudioOutState State = AudioOutState.Stopped;
private static List<long> KeysQueue = new List<long>(); private static Queue<long> KeysQueue = new Queue<long>();
//OpenAL //OpenAL
private static bool OpenALInstalled = true; private static bool OpenALInstalled = true;
@ -48,9 +48,9 @@ namespace Ryujinx.OsHle.Objects
{ {
AudioCtx = new AudioContext(); //Create the audio context AudioCtx = new AudioContext(); //Create the audio context
} }
catch (Exception ex) catch (Exception)
{ {
Console.WriteLine("OpenAL Error! PS: Install OpenAL Core SDK!"); Logging.Warning("OpenAL Error! PS: Install OpenAL Core SDK!");
OpenALInstalled = false; OpenALInstalled = false;
} }
@ -82,7 +82,7 @@ namespace Ryujinx.OsHle.Objects
{ {
long BufferId = Context.RequestData.ReadInt64(); long BufferId = Context.RequestData.ReadInt64();
KeysQueue.Insert(0, BufferId); KeysQueue.Enqueue(BufferId);
byte[] AudioOutBuffer = AMemoryHelper.ReadBytes(Context.Memory, Context.Request.SendBuff[0].Position, 0x28); byte[] AudioOutBuffer = AMemoryHelper.ReadBytes(Context.Memory, Context.Request.SendBuff[0].Position, 0x28);
using (MemoryStream MS = new MemoryStream(AudioOutBuffer)) using (MemoryStream MS = new MemoryStream(AudioOutBuffer))
@ -125,13 +125,9 @@ namespace Ryujinx.OsHle.Objects
{ {
long TempKey = 0; long TempKey = 0;
if (KeysQueue.Count > 0) if (KeysQueue.Count > 0) TempKey = KeysQueue.Dequeue();
{
TempKey = KeysQueue[KeysQueue.Count - 1];
KeysQueue.Remove(KeysQueue[KeysQueue.Count - 1]);
}
AMemoryHelper.WriteBytes(Context.Memory, Context.Request.ReceiveBuff[0].Position, System.BitConverter.GetBytes(TempKey)); AMemoryHelper.WriteBytes(Context.Memory, Context.Request.ReceiveBuff[0].Position, BitConverter.GetBytes(TempKey));
Context.ResponseData.Write((int)TempKey); Context.ResponseData.Write((int)TempKey);

View file

@ -563,7 +563,7 @@ namespace Ryujinx.OsHle.Services
NvMap.Kind = Kind; NvMap.Kind = Kind;
} }
Console.WriteLine($"NvMapIocAlloc at {NvMap.Address:x16}"); Logging.Debug($"NvMapIocAlloc at {NvMap.Address:x16}");
return 0; return 0;
} }

View file

@ -121,7 +121,7 @@ namespace Ryujinx.OsHle.Svc
string Str = AMemoryHelper.ReadAsciiString(Memory, Position, (int)Size); string Str = AMemoryHelper.ReadAsciiString(Memory, Position, (int)Size);
Console.WriteLine($"SvcOutputDebugString: {Str}"); Logging.Info($"SvcOutputDebugString: {Str}");
Registers.X0 = (int)SvcResult.Success; Registers.X0 = (int)SvcResult.Success;
} }