ZLogger
ZLogger copied to clipboard
Why I can't achieve 0 GC or even generate a lot of GCs From Unity?
Use ZString And ZLogger In Unity
In comparison, UnityLogger GC is much lower
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.SetMinimumLevel(LogLevel.Debug);
#if UNITY_EDITOR
builder.AddZLoggerUnityDebug();
#endif
builder.AddZLoggerFile(zStringbuilder.ToString(), options => { options.UseJsonFormatter(); });
});
logger = loggerFactory.CreateLogger<SerializeSample>();
using (var filePath = ZString.CreateUtf8StringBuilder())
{
filePath.AppendFormat("{0}{1}.bytes", FileNameBuilder, syncDataSaveCount);
logger.ZLogInformation($"{filePath}");
}
using (var logString = ZString.CreateUtf8StringBuilder())
{
logString.AppendFormat("SaveSyncDataFromMemoryPack : {0} ", stopwatch.ElapsedMilliseconds);
Debug.unityLogger.Log($"{logString}");
}
@MutualFunGames is the profiler snapshot taken from device of unity editor? if its from the editor i suggest comparing on device.
@freemason79 Thanks, here's a test I did on WindowsRuntime
zlogger:
Debug.UnityLogger.Log:
then this is my code
public class Launcher : MonoBehaviour
{
private ILogger<Launcher> SampleLogger;
private Utf8ValueStringBuilder SampleUtf8StringBuiler;
public GameObject sampleGameObject;
// Start is called once before the first execution of Update after the MonoBehaviour is created
async UniTaskVoid Start()
{
var loggerFactory = LoggerFactory.Create(logging =>
{
logging.SetMinimumLevel(LogLevel.Trace);
logging.AddZLoggerUnityDebug(); // log to UnityDebug
});
SampleLogger = loggerFactory.CreateLogger<Launcher>();
SampleUtf8StringBuiler = ZString.CreateUtf8StringBuilder(true);
SampleUtf8StringBuiler.AppendFormat("Hello,{0}",nameof(Launcher));
SampleLogger.ZLogInformation($"{SampleUtf8StringBuiler}");
}
// Update is called once per frame
async UniTaskVoid Update()
{
SampleUtf8StringBuiler.Clear();
//比较尴尬的问题,如果不等待直接Log,会发现没有获取到时间
SampleUtf8StringBuiler.AppendFormat("Game Running Time : {0}",Time.time);
await UniTask.WaitForEndOfFrame();
SampleLogger.ZLogDebug($"{SampleUtf8StringBuiler}");
//Debug.unityLogger.Log($"{SampleUtf8StringBuiler}");
sampleGameObject.transform.RotateAround(Vector3.back, 3*Time.deltaTime);
}
}
and packages version
This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 30 days.