【问题标题】:Reading log file during run time and displaying line by line at client side在运行时读取日志文件并在客户端逐行显示
【发布时间】:2019-08-29 14:33:15
【问题描述】:

通过单击按钮创建日志文件 (log4net)。我只需要在运行时读取该文件并将结果逐行显示到客户端,就像进度条一样。如何做到这一点?我正在使用 asp.net 4.5,c#

我尝试从服务器端调用一些 java 脚本函数,但显然它只显示最终结果。它必须是同时进行的。

【问题讨论】:

  • 这个codeproject 给出了一个关于 NLog 和 SignalR 的想法。也许你可以把它适应 log4Net?

标签: c# asp.net logging sitecore log4net


【解决方案1】:

您可以在日志配置中添加一个 memoryappender,这也会记录到内存中,因此您无需同时读取文件。配置可以通过xml配置或者代码来完成:

/// <summary>
/// Attaches a memory appender
/// </summary>
/// <param name="log"></param>
public static MemoryAppender AttachMemoryAppender(this ILog log)
{
    var memoryAppender = new log4net.Appender.MemoryAppender
    {
        //  *** AppenderSkeleton ***
        Name = log.GetLogger().Name,
        Threshold = log.GetLogger().Repository.LevelMap["DEBUG"],

        //  *** MemoryAppender ***
        Fix = FixFlags.All
    };

    var layout = new log4net.Layout.PatternLayout
    {
        ConversionPattern = "%date - %-5level - %message%newline"
    };

    layout.ActivateOptions();
    memoryAppender.Layout = layout;
    memoryAppender.ActivateOptions();

    log.GetLogger().AddAppender(memoryAppender);

    return memoryAppender;
}

获取日志使用:

var events = memoryAppender.GetEvents();

【讨论】:

    猜你喜欢
    • 2014-08-30
    • 2020-06-17
    • 2021-07-21
    • 2021-12-02
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多