调用站点不包含行号-Linux上带有Mono的NLog

本文关键字:Mono NLog -Linux 站点 包含行 调用 | 更新日期: 2023-09-27 18:28:33

我在Mono中使用NLog的调用站点时遇到问题。行号丢失,就像调试信息文件(mdb)丢失一样。但是mdb并没有丢失。有什么想法吗?

一些细节:

单声道版本:

Mono JIT compiler version 3.12.1 (mono-3.12.0-branch/4cb3f77 Fri Jul 24 15:30:03 CST 2015)

NLog版本:

4.2.2

C#代码:

using NLog;
using NLog.Targets;
using NLog.Config;
namespace TestMono.Verbose
{
    public sealed class TestCallsite
    {
        public static void Main(string[] arguments)
        {
            LoggingConfiguration config = new LoggingConfiguration();
            ConsoleTarget consoleTarget = new ConsoleTarget();
            consoleTarget.Layout = "${message} - ${callsite}";
            config.AddTarget("console", consoleTarget);
            LoggingRule rule1 = new LoggingRule("*", LogLevel.Debug, consoleTarget);
            config.LoggingRules.Add(rule1);
            LogManager.Configuration = config;
            Logger logger = LogManager.GetLogger("Example");
            logger.Trace("trace log message");
            logger.Debug("debug log message");
            logger.Info("info log message");
            logger.Warn("warn log message");
            logger.Error("error log message");
            logger.Fatal("fatal log message");
        }
    }
}

编译命令:

mcs /reference:NLog /reference:NLog.dll test.cs -debug

控制台输出:

>mono test.exe
debug log message - TestMono.Verbose.TestCallsite.Main
info log message - TestMono.Verbose.TestCallsite.Main
warn log message - TestMono.Verbose.TestCallsite.Main
error log message - TestMono.Verbose.TestCallsite.Main
fatal log message - TestMono.Verbose.TestCallsite.Main

在"Main"后面的括号中应该有一个行号。

编辑:

带有.NET:的窗口上的控制台输出

> .'ConsoleApplication1.exe
debug log message - ConsoleApplication1.TestCallsite.Main(Program.cs:26)
info log message - ConsoleApplication1.TestCallsite.Main(Program.cs:27)
warn log message - ConsoleApplication1.TestCallsite.Main(Program.cs:28)
error log message - ConsoleApplication1.TestCallsite.Main(Program.cs:29)
fatal log message - ConsoleApplication1.TestCallsite.Main(Program.cs:30)

调用站点不包含行号-Linux上带有Mono的NLog

调用mono:时使用--debug标志

> mono --debug test.exe

NLog为调用站点行号提供了单独的布局渲染。不完全确定为什么它是单独的,而不仅仅是调用站点布局渲染中的一个选项https://github.com/NLog/NLog/wiki/Callsite-line-number-layout-renderer

${callsite-linenumber:skipFrames=Integer}

希望这能给你所需要的