I have a problem with using NLog's callsite with Mono. The line numbers are missing, just like if the debug information file (mdb) was missing. However mdb is not missing. Any ideas what might be wrong?
Some details:
Mono version:
Mono JIT compiler version 3.12.1 (mono-3.12.0-branch/4cb3f77 Fri Jul 24 15:30:03 CST 2015)
NLog version:
4.2.2
C# code:
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");
}
}
}
Compilation command:
mcs /reference:NLog /reference:NLog.dll test.cs -debug
Console output:
>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
There should be a line number in bracket after "Main".
Edited:
Console output on windows with .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)