c# - Callsite 不包含行号 - NLog with Mono on Linux

标签 c# linux mono nlog

我在将 NLog 的调用站点与 Mono 结合使用时遇到问题。缺少行号,就像缺少调试信息文件 (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 在 Windows 上的控制台输出:

> .\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)

最佳答案

调用单声道时使用--debug标志:

> mono --debug test.exe

关于c# - Callsite 不包含行号 - NLog with Mono on Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34514210/

相关文章:

c# - 如何将 reader.Read 字符串转换为 C# 中的货币格式?

c# - 无法将类型为 'System.DBNull' 的对象转换为类型 'System.String`

linux - 如何将 "attach"工作目录到裸 GIT 存储库

linux - 如果以64位代码使用32位int 0x80 Linux ABI,会发生什么情况?

c# - ASP.NET MVC4 + Razor on Mono + EF 6 DateTime 崩溃

c# - 出现错误 :Operand type clash: nvarchar is incompatible with image

c - libusb-1.0 热插拔事件在 fork() 之后停止在父级中工作,当子级调用 libusb_exit() 时

C#:检测是否在 Windows 和 Mono 中以 super 用户身份运行

c# 创建或修改文件/目录权限 : add group read permission using asp.net with mono 和 apache2

c# - Log4Net:如何将程序内部的日志记录结果输出到一个变量中?