Log4Net 生成多个文件、文件名累加解决方法

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

Log4Net 生成多个文件、文件名累加解决方法

项目中的WCF服务里采用Log4Net用来记录异常日志,但部署后,生成的日志会出现多个累加文件,如下图:

WCF是寄宿在IIS上,包含了5个SVC服务。打开日志文件,发现记录的引发异常的Thread ID都不一样,猜测是多线程读写日志文件,

配置信息里指定文件的被占用后,重新建立了新的日志文件,删除日志文件也会出现警告信息:

解决方法:

在appender节点里添加:

<param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />

lockingModel 属性的详细信息可看 Log4Net SDK 中的描述。

很不解的是:type中 FileAppender+MinimalLock 为何要用 '+' 来做连接符,换成'.'的时候却不行。

 

完整Log4Net配置信息:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/> </configSections> <log4net> <!--日志对象根设置--> <root> <!--定义Level级别,若没定义,默认为Debug--> <level value="ERROR"/> <!--定义日志对象使用的appender,通过appeder-ref来注册--> <appender-ref ref="LogFileAppender"/> </root> <!--定义具体的logger对象 通过调用LogManager.GetLogger(“wcflog”)函数,你可以检索具有该名字的日志。如果LogManager.GetLogger(…)打开的不是预定义的日志对象,则该日志对象会继承根日志对象的属性。知道了这一点,我们可以说,其实<logger>标签并不是必须的--> <logger name="wcflog" additivity="true"> <!--additivity 是否确认子日志对象继承父日志对象的appender列表,默认为True:确认--> <!--注意优先级,优先级低的要放在后面--> <level value="INFO" /> <level value="DEBUG"/> </logger> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > <!--配置在root注册的appender-ref具体属性--> <param name="File" value="log//"/> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy-MM-dd.LOG" /> <param name="AppendToFile" value="true"/> <!--按照文件的大小进行变换日志文件--> <param name="RollingStyle" value="Date" /> <!--单个文件最大数量--> <param name="MaximumFileSize" value="1000KB"/> <!--保留的log文件数量 超过此数量后 自动删除之前的 --> <param name="MaxSizeRollBackups" value="100" /> <!--最小锁定模型以允许多个进程可以写入同一个文件--> <param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" /> <!--type属性,定义类型--> <layout type="log4net.Layout.PatternLayout"> <!--定义日志会话(logger session)开始输出的文字--> <param name="Header" value="异常开始记录 :"/> <!--定义日志会话(logger session)结束输出的文字--> <!--<param name="Footer" value="[Footer]\r\n"/>--> <!--输出信息的模式: --> <param name="ConversionPattern" value="%n时间 : %d 线程ID:[%t] %-5p 当前对象名称:%c - %m%n"/> </layout> <!--过滤器,只需要min和max之间的级别--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG"/> <param name="LevelMax" value="ERROR"/> </filter> </appender> </log4net> 

</configuration>

本文转自欢醉博客园博客,原文链接http://www.cnblogs.com/zhangs1986/p/7576152.html如需转载请自行联系原作者


欢醉

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
3月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
206 3
|
4月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
160 0
|
8月前
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
841 28
|
10月前
|
Linux C# Windows
.NET使用MiniWord高效生成Word文件
.NET使用MiniWord高效生成Word文件
238 12
|
11月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
340 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
11月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
246 1
【赵渝强老师】Oracle的控制文件与归档日志文件
|
10月前
|
存储 SQL 关系型数据库
【赵渝强老师】PostgreSQL的运行日志文件
PostgreSQL的物理存储结构包括数据文件、日志文件等。运行日志默认未开启,需配置`postgresql.conf`文件中的相关参数如`log_destination`、`log_directory`等,以记录数据库状态、错误信息等。示例配置中启用了CSV格式日志,便于管理和分析。通过创建表操作,可查看生成的日志文件,了解具体日志内容。
274 3
|
11月前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL的全量日志文件
MySQL全量日志记录所有操作的SQL语句,默认禁用。启用后,可通过`show variables like %general_log%检查状态,使用`set global general_log=ON`临时开启,执行查询并查看日志文件以追踪SQL执行详情。
172 4
|
12月前
|
监控 Linux 应用服务中间件
系统监控:使用日志文件 journalctl的使用
本文介绍了如何使用`journalctl`命令来监控和查看Linux系统的日志文件,包括查看特定行数、过滤日志级别、实时跟踪日志、按时间段查询日志以及日志轮换和压缩的配置。
594 2
系统监控:使用日志文件 journalctl的使用
|
11月前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
546 1

热门文章

最新文章