当前位置: 首页 > 编程语言 > C#

Log4Net:如何向每个日志行添加简单的索引器(行号)分享

时间:2023-04-10 16:08:23 C#

C#学习教程:Log4Net:如何为每条日志行添加一个简单的索引器(行号)每个日志行的简单索引器(行号)向文件中的每一行添加一个行索引器(行号或迭代器)。我不需要它对整个日志文件都是唯一的,但只针对“应用程序会话”(即每次Win32应用程序启动时,我们开始倒计时:1、2、3等)是内置的-方式(conversionpattern标记语法)或一些自定义扩展?太感谢了!我的解决方案仅适用于一个附加程序,每次启动应用程序时都会重置计数器。您可以使用模式转换器:publicsealedclassLineCounterPatternConverter:PatternLayoutConverter{privatestaticint_counter=0;protectedoverridevoidConvert(TextWriterwriter,LoggingEventloggingEvent){varcounter=System.Threading.Interlocked.Increment(ref_counter);作家。写(计数器。ToString());然后你这样配置它:[]括号当然是可选的。您还可以执行类似%6LC的操作,它会用空格填充行,以便您可以很好地对齐消息。我将执行以下操作:首先,定义一些日志记录助手publicclassWebLoggingHelper{publicstaticCurrentLineHelperCurrentLine=newCurrentLineHelper();公共类CurrentLineHelper{privatelong_counter=0;publicoverridestringToString(){longcounter=System.Threading.互锁增量(ref_counter);返回counter.ToString();然后将日志记录助手连接到初始化记录器的log4net属性publicvoidConfigureLog4Net(){XmlConfigurator.Configure();GlobalContext.Properties["CurrentLine"]=WebLoggingHelper.CurrentLine;}利润!或者更严重的是,现在您可以使用%property{CurrentLine}直接以log4net格式使用%property{CurrentLine}我使用这种方法来记录很多需要计算和特定于应用程序的东西。您可能需要添加一些逻辑以将长数用于长数,并对行号进行一些格式化(例如,左侧的零填充等)......记录一下!编辑:我在这里提出的解决方案一次只适用于一个日志文件。我在许多日志文件中使用这种模式,如果您添加针对竞争条件的保护(只需在辅助对象的tostring方法中添加一个同步时钟),每个日志文件都有一个唯一的行号来管理多个带有行号Logger的日志文件,另一个应该使用方法EDIT#2:更新为线程安全的,也更新为共享标识符名称和已接受的答案,以使读者受益(更易于理解和比较。)以上就是C#学习教程的全部内容:Log4Net:Howtoaddasimpleindexer(linenumber)toeachlogline。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: