C# NLog拒绝抛出异常

C# NLog拒绝抛出异常,c#,debugging,exception,nlog,throw,C#,Debugging,Exception,Nlog,Throw,各位开发者好, 我在NLog中遇到了一个奇怪的问题, 我崩溃了,但在日志中找不到用户活动的跟踪 我想,日志记录不起作用… 尝试搜索权限问题等,但似乎一切正常 我想在出现问题时调试日志记录,因此我创建了以下 用于告知用户是否无法创建任何内容的代码: public static class Log { static Log() { try { AppLogger = LogManager.GetLogger("Megatec.E

各位开发者好,

我在NLog中遇到了一个奇怪的问题,
我崩溃了,但在日志中找不到用户活动的跟踪

我想,日志记录不起作用…
尝试搜索权限问题等,但似乎一切正常

我想在出现问题时调试日志记录,因此我创建了以下
用于告知用户是否无法创建任何内容的代码:

public static class Log
{
    static Log()
    {
        try
        {
            AppLogger = LogManager.GetLogger("Megatec.EngineeringMatrix.AppLogger");
            ChangeLogger = LogManager.GetLogger("Megatec.EngineeringMatrix.ChangeLogger");
            DRCLogger = LogManager.GetLogger("Megatec.EngineeringMatrix.DRCLogger");

            if((AppLogger == null) || (ChangeLogger == null) || (DRCLogger == null))
                throw new NLogConfigurationException("Configuration does not specify correct loggers");
            writeStartupLogEntry();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString(), @"Failed to load `Megatec.EngineeringMatrix` Loggers.");
            throw;
        }

    }

    public static readonly Logger AppLogger;
    public static readonly Logger ChangeLogger;
    public static readonly Logger DRCLogger;
使用以下配置文件:


显然,我编写了BAAD配置,因为无法创建目录
c:\lo?gs

但是,我仍然没有得到消息
MessageBox.Show(例如ToString(),@“无法加载“Megatec.EngineeringMatrix”

甚至
AppLogger.Info()

我没有写日志,但应用程序不知道

在调试中,我可以捕获异常,并看到它是由NLog处理的


如何从代码中捕获它?

这是一个老问题,但最近对此进行了一些更改

一些异常在过去被NLog“吃掉”。例如在
AsyncWrapper
(或使用
上的属性
async

这已在NLog 4.3中修复:

异常的一致处理(行为改变) 异常的日志记录和抛出以前不一致。并非所有异常都记录到内部记录器,有时它们会丢失。例如,异步包装器(或异步属性)在没有正确重试的情况下捕获所有异常

这是不好的,因为有时不清楚NLog为什么不工作(我自己多次得到)。这在NLog 4.3中已经修复

所有异常都记录到内部记录器中 “ThroweExceptions”选项将在所有情况下得到尊重 建议:在生产环境中禁用ThroweExceptions!(这是默认设置)


请参见

您是否尝试了此处的故障排除步骤:?默认情况下,日志异常会被忽略。是的,我添加了您可以看到的Necesory config参数..但仍然可以。我可以在internalLog中看到,但没有传递到应用程序。