Watch
2
0
Fork
You've already forked raylib-cs
0

Add Example Serilog as TraceLogCallback

This commit is contained in:
AndreasSasDev 2024-05-08 20:04:26 +02:00
commit f6c5e86d45
3 changed files with 101 additions and 0 deletions

View file

@ -0,0 +1,66 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Serilog;
using static Raylib_cs.Raylib;
namespace Examples.Logging;
public static class CustomSerilogLogging
{
private static readonly ILogger Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
private static unsafe delegate* unmanaged[Cdecl]<int, sbyte*, sbyte*, void> GetPointer() => &LogCallback;
[UnmanagedCallersOnly(CallConvs = [typeof(CallConvCdecl)])]
public static unsafe void LogCallback(int msgType, sbyte* text, sbyte* args) {
// Retrieve the log message from Raylib
string message = Raylib_cs.Logging.GetLogMessage(new IntPtr(text), new IntPtr(args));
// Handle the message through Serilog
Logger.Information(message);
}
public static int Main()
{
Logger.Information("Using Serilog");
// Attach Logger to callback
//--------------------------------------------------------------------------------------
unsafe {
SetTraceLogCallback(GetPointer());
}
Logger.Information("Logger has been set to Raylib-cs TraceLogCallback");
// raylib Window Initialization
//--------------------------------------------------------------------------------------
const int screenWidth = 800;
const int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib custom Logger example - basic window");
// Main game loop
while (!WindowShouldClose())
{
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(Color.RayWhite);
DrawText("Hello World!", 190, 200, 20, Color.Black);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow();
//--------------------------------------------------------------------------------------
return 0;
}
}

View file

@ -0,0 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<LangVersion>12</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Core/LoadingThread.cs"/>
<Compile Remove="Text/Unicode.cs"/>
</ItemGroup>
<ItemGroup>
<Using Include="Raylib_cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="../Raylib-cs/Raylib-cs.csproj" />
<!-- <ProjectReference Include="../Raylib-cs.Native/Raylib-cs.Native.csproj" />-->
</ItemGroup>
<ItemGroup>
<PackageReference Include="Serilog" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
</ItemGroup>
</Project>