bbbscarter / UberLogger

Replacement logging framework for Unity, with a new editor and in-game console
MIT License
475 stars 62 forks source link

Clicking on a log doesn't jump to the code line but to ForwardToUnity() - Unity 2019.2.1 #52

Open Wikzo opened 5 years ago

Wikzo commented 5 years ago

We recently upgraded from Unity 2018 to 2019.2.1. Before, when I clicked on a log, it used to go to the line in the code. Now it goes to else if(severity==LogSeverity.Error) UnityEngine.Debug.LogError(showObject); instead

`[LogUnityOnly()] static void ForwardToUnity(UnityEngine.Object source, LogSeverity severity, object message, params object[] par) { object showObject = null; if(message!=null) { var messageAsString = message as string; if(messageAsString!=null) { if(par.Length>0) { showObject = String.Format(messageAsString, par); } else { showObject = message; } } else { showObject = message; } }

        if(source==null)
        {
            if(severity==LogSeverity.Message) UnityEngine.Debug.Log(showObject);
            else if(severity==LogSeverity.Warning) UnityEngine.Debug.LogWarning(showObject);
            else if(severity==LogSeverity.Error) UnityEngine.Debug.LogError(showObject);
        }
        else
        {
            if(severity==LogSeverity.Message) UnityEngine.Debug.Log(showObject, source);
            else if(severity==LogSeverity.Warning) UnityEngine.Debug.LogWarning(showObject, source);
            else if(severity==LogSeverity.Error) UnityEngine.Debug.LogError(showObject, source);
        }
    }`

We are using a simple "middleman" class called CustomDebug:

`public static class CustomDebug {

private const bool USE_UBER_LOGGER = true;

[UberLogger.StackTraceIgnore]
public static void LogWarning(string message, DebugType debugType = DebugType.Temp, UnityEngine.Object obj = null)
{
    string log = "";

    if (Application.isEditor)
        log = $"{message} [{obj?.name}] [{debugType}]";
    else
        log = $"{message} [{obj?.name}] [{debugType}] [{UnityEngine.SceneManagement.SceneManager.GetActiveScene().path}] [Frame {UnityEngine.Time.frameCount}] [{System.DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")}]";

    if (USE_UBER_LOGGER)
        UberDebug.LogWarningChannel(obj, debugType.ToString(), log);
    else
        Debug.LogWarning(log, obj);

}

}`

Wikzo commented 5 years ago

Note: when I click on the log with the standard Console, it goes to the line specified above. If I click on it with Uber Console, nothing happens (it used to work in the previous Unity 2018).

jalako commented 4 years ago

Did you find a solution now? I have the same problem.

Wikzo commented 4 years ago

Did you find a solution now? I have the same problem.

No :(

bbbscarter commented 4 years ago

Hi! Sorry for the delay - I can look at this at some point. I suspect it's nothing too difficult to fix.

jalako commented 4 years ago

Is there any update on this issue?

Rademanc commented 4 years ago

Replace line 751 in UbberLoggerWindow.cs with this : if (UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal(filename, frame.LineNumber, 0 ))

jalako commented 4 years ago

Replace line 751 in UbberLoggerWindow.cs with this : if (UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal(filename, frame.LineNumber, 0 ))

I can confirm that this fix is working for me on Unity 2019.2.6f1 on Windows 10. The file you mean though is "UberLoggerEditorWindow.cs"