【问题标题】: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();