Callsite不包含行号 - 在Linux上使用Mono和Mono

时间:2015-12-29 15:38:13

标签: c# linux mono nlog

我在使用NOV的呼叫站点时遇到问题。缺少行号,就像缺少调试信息文件(mdb)一样。但是mdb并没有丢失。什么想法可能是错的?

一些细节:

单声道版本:

auto result = f2(static_cast<int>(NULL));

NLog版本:

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

C#代码:

4.2.2

编辑命令:

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

在&#34; Main&#34;。

之后的括号中应该有一个行号

编辑:

使用.NET的Windows控制台输出:

>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

2 个答案:

答案 0 :(得分:1)

调用mono:

时使用memset标志
bool

答案 1 :(得分:0)

NLog为callsite-linenumber提供了单独的布局渲染。不完全确定为什么它的单独而不仅仅是callsite布局中的一个选项呈现 https://github.com/NLog/NLog/wiki/Callsite-line-number-layout-renderer

${callsite-linenumber:skipFrames=Integer}

希望能满足您的需求