如何停止 log4net 记录并释放最后一个文件
How to stop log4net from logging and release the last file
我在 C# Win Form App 中使用 log4net,我有 start/stop 切换按钮 -
当我单击 "start" 时,将加载 log4net 配置并创建日志文件 - 可以正常工作。
但现在我想添加单击 "stop" 按钮的选项,以停止记录器并释放文件,以便我可以使用我的应用程序中的 openFileDialog
打开它使用 StreamReader
读取日志文件文本以在多行 textbox
.
上显示日志文件
在运行时 期间停止 log4net 需要修改其配置文件:
<level value="ALL" />
到
<level value="INFO" />
如果您不能更改配置文件,您应该为 log.debug()
:
定义一个代理
static public class LogDebugProxy
{
static public bool LogDebug = false;
static public void debug(log4net.ILog log)
{
if (LogDebug)
log.debug();
}
}
然后在整个项目中将 log.debug()
替换为 LogDebugProxy.debug(log)
。
现在,您可以通过它的代理启用/禁用它。
您可以在运行时修改 Threshold
。要停止记录,请将其设置为 Off
。我已经在 .
中展示了它是如何工作的
我可以阅读 log4net
日志文件:
string text;
var fileStream = new FileStream(@"C:\logs\yourLogFile.log", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
{
text = streamReader.ReadToEnd();
MessageBox.Show(this, text);
}
我在 C# Win Form App 中使用 log4net,我有 start/stop 切换按钮 -
当我单击 "start" 时,将加载 log4net 配置并创建日志文件 - 可以正常工作。
但现在我想添加单击 "stop" 按钮的选项,以停止记录器并释放文件,以便我可以使用我的应用程序中的 openFileDialog
打开它使用 StreamReader
读取日志文件文本以在多行 textbox
.
在运行时 期间停止 log4net 需要修改其配置文件:
<level value="ALL" />
到
<level value="INFO" />
如果您不能更改配置文件,您应该为 log.debug()
:
static public class LogDebugProxy
{
static public bool LogDebug = false;
static public void debug(log4net.ILog log)
{
if (LogDebug)
log.debug();
}
}
然后在整个项目中将 log.debug()
替换为 LogDebugProxy.debug(log)
。
现在,您可以通过它的代理启用/禁用它。
您可以在运行时修改 Threshold
。要停止记录,请将其设置为 Off
。我已经在
我可以阅读 log4net
日志文件:
string text;
var fileStream = new FileStream(@"C:\logs\yourLogFile.log", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
{
text = streamReader.ReadToEnd();
MessageBox.Show(this, text);
}