c# - 停止 log4net 日志记录进程并删除日志文件锁定

标签 c# log4net

我正在开发一个 Windows 服务应用程序,该应用程序应该在特定时间运行计划的作业。每个作业执行周期都使用 log4net 进行记录,并且每次执行都有自己的文件(5 个作业每天运行 5 天,将创建 25 个日志文件)。

问题是,如何停止 log4net 日志文件锁定,以便在作业完成执行后我可以通过电子邮件发送日志文件并将其从硬盘驱动器中删除?

我需要以编程方式执行此操作,因此配置文件设置在这种情况下不起作用。

到目前为止我已经尝试过了,但它不起作用:

    logger.Logger.Repository.LevelMap.Clear();
    logger.Logger.Repository.LevelMap.Add(logger.Logger.Repository.LevelMap["OFF"]);

最佳答案

如果您使用的是 FileAppender,则可以将 LockingModel 设置为 MinimalLock:

Dim fileAppenderTrace As New log4net.Appender.RollingFileAppender
fileAppenderTrace.ImmediateFlush = True
fileAppenderTrace.LockingModel = New FileAppender.MinimalLock()
fileAppenderTrace.ActivateOptions()

它会在写入每个日志条目后释放文件,而不是在工作完成后释放文件,所以我不确定这是否完全是您想要的。

关于c# - 停止 log4net 日志记录进程并删除日志文件锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6929471/

相关文章:

asp.net - 如何关闭 INFO 级别的 NHibernate 日志记录?

c# - 使用 GridView 生成数据表

c# - 将大型二维数组写入 Excel

c# - Ubuntu 上单声道的 log4net Udp appender 不记录

logging - 登录 lo4j/net 自定义附加程序的最佳实践

c# - 配置 log4net 记录器以匹配通用类

c# - 具有 5 个字符的 4x4 矩阵的所有组合

c# - Linq OrderBy 对具有相同集合的对象进行分组

c# - 如何在 C# 中使用正则表达式从字符串中删除所有不需要的字符?

c# - 为什么在配置文件中无法识别 log4net?