C# 使用NLog记录异常

C# 使用NLog记录异常,c#,xamarin,nlog,C#,Xamarin,Nlog,在NLog wiki页面中,我发现这描述了如何记录异常。但在页面中,他们提到了类似这样的东西来实现该功能 我正在动态创建配置文件,不确定如何在代码中实现上述配置 配置代码为 public class NLogManager : ILogManager { public NLogManager() { var config = new LoggingConfiguration(); var consoleTarg

在NLog wiki页面中,我发现这描述了如何记录异常。但在页面中,他们提到了类似这样的东西来实现该功能


我正在动态创建配置文件,不确定如何在代码中实现上述配置

配置代码为

public class NLogManager : ILogManager
{
        public NLogManager()
        {
            var config = new LoggingConfiguration();

            var consoleTarget = new ConsoleTarget();
            config.AddTarget("console", consoleTarget);

            var consoleRule = new LoggingRule("*", LogLevel.Trace, consoleTarget);
            config.LoggingRules.Add(consoleRule);

            var fileTarget = new FileTarget();
            string folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            fileTarget.FileName = Path.Combine(folder, "Log.txt");
            config.AddTarget("file", fileTarget);

            var fileRule = new LoggingRule("*", LogLevel.Warn, fileTarget);
            config.LoggingRules.Add(fileRule);

            LogManager.Configuration = config;
        }

        public ILogger GetLog([System.Runtime.CompilerServices.CallerFilePath] string callerFilePath = "")
        {
            string fileName = callerFilePath;

            if (fileName.Contains("/"))
            {
                fileName = fileName.Substring(fileName.LastIndexOf("/", StringComparison.CurrentCultureIgnoreCase) + 1);
            }

            var logger = LogManager.GetLogger(fileName);
            return new NLogLogger(logger);
        }
    }

有谁能建议我如何动态地配置它吗?

您需要在(文件)
目标上设置
布局
属性:

fileTarget.Layout = "${longdate} ${message} ${exception:format=tostring}";

注意:默认布局是
${longdate}|${level:uppercase=true}|${logger}|${message}
,并且不包括您可以看到的异常。这将在NLog 5或6中更改:

您需要在(文件)
目标上设置
布局
属性:

fileTarget.Layout = "${longdate} ${message} ${exception:format=tostring}";

注意:默认布局是
${longdate}|${level:uppercase=true}|${logger}|${message}
,并且不包括您可以看到的异常。这将在NLog 5或6中更改:

需要动态更改什么?如何将异常写入日志?如何在上面的代码中配置它?现在,如果我给出像这样的日志?.Error(newExc,“TaskScheduleRonUnobservedTaskeException”)唯一的消息是,我认为xml在配置文件中做了相同的事情。就我而言,我没有在应用程序中维护配置文件。相反,我使用的是上述给定的C#代码逻辑。动态需要什么?如何将异常写入日志?如何在上面的代码中配置它?现在,如果我给出像这样的日志?.Error(newExc,“TaskScheduleRonUnobservedTaskeException”)唯一的消息是,我认为xml在配置文件中做了相同的事情。就我而言,我没有在应用程序中维护配置文件。相反,我使用的是上述给定的C#代码逻辑