按日期降序显示NLog

问题描述

我正在将NLog与VB.Net项目一起使用:

Private m_logger As NLog.Logger = LogManager.GetCurrentClassLogger()

问题在日志中的填充如下:

Catch ex As Exception
    Console.WriteLine("Error: {0}",ex.Message.ToString())
    m_logger.Error(ex,"ExtractCalendar@R_219_4045@ion")
End Try

现在,此VB也是一个控制台应用程序,已与另一个用Visual C ++编写的应用程序一起使用。如果父应用检测到问题,则显示日志文件

void cmeetingScheduleAssistantApp::ShowLogFile(CString strLogFile)
{
    if (PathFileExists(strLogFile))
    {
        CLogDlg dlgLog;

        CTextFileRead fileLog(strLogFile);
        CString strText = _T("");

        fileLog.ReadLine(strText);
        while (!fileLog.Eof())
        {
            strText.Trim();
            if (strText.IsEmpty())
                continue;

            dlgLog.AddLogEntry(strText,true);
            fileLog.ReadLine(strText);
        }

        dlgLog.SetErrorMode(true);
        dlgLog.DoModal();
    }
}

问题在于日志文件的日期为高,有时用户向我发送了屏幕截图,但没有滚动。

Log

是否仍然可以按照fdate降序从Nlog显示错误日志?而且我认为仅反向读取文件是不可行的。

我同时包含VB和C ++标记,因为我可能必须在任一工具中进行更改。


我看到了这个问题Write records in descending order in NLog。关键是我的C#工具使用SimpleLogger,并在文件夹中创建日志文件夹,并且日志按日期命名,并且该日志中的所有项目都是降序的。但是我不能将SimpleLogger与我不认为的VB.Net一起使用。

解决方法

一种选择是将文件加载到vector<CString>中,然后仅使用rbegin()进行反向迭代并将文件内容插入dlgLog。

另一种选择是研究在加载文件后如何更新CTextFileRead中的滚动条,以便将滚动按钮向下移动到底部。


更新

我实际上是在使用CEdit控件来显示日志内容。所以最后我使用以下代码自动滚动到底部:

m_editLogData.LineScroll(m_editLogData.GetLineCount());