NLog文章系列——入门教程(下)

电容DAC版图布局中的对称艺术:从二维共质心到误差最小化 本文深入探讨了电容DAC版图布局中的对称艺术,重点介绍了二维共质心技术如何有效最小化误差。通过分析系统误差和随机误差的来源,详细解析了共质心布局的核心技术及优化策略,包括梯度误差补偿和寄生参数平衡方法。实战案例展示了该技术在12位SAR ADC设计中的应用效果,为高精度集成电路设计提供了重要参考。 阅读详情

作者:Jarosław Kowalski <jaak@jkowalski.net>

翻译:Dflying Chen:http://dflying.cnblogs.com/

原文:http://www.nlog-project.org/tutorial.html

本文为《NLog文章系列》的第四篇,即入门教程的最后一篇。将继续描述演示用NLog书写日志的方法。

 

自动重新配置

NLog的配置文件将在程序启动之后自动加载。对于某些将长时间运行的进程(例如Windows服务或ASP.NET应用程)来说,往往需要在程序运行当中临时性地提高记录等级,而这时我们却并不希望重新启动该应用程序。NLog可以自动跟踪其配置文件的变化,一旦配置文件被修改,NLog将立即自动重新加载。我们可以通过在配置文件中设置<nlog autoReload="true" />来实现该需求。这种自动重新配置功能也会应用到被包含的文件上,也就是说若包含文件发生了变化,NLog同样将自动重新加载整个的配置文件。

 

日志功能排错

虽然已经配置好了NLog,可是有些时候应用程序仍旧会出现一些难以理解的问题,例如没有任何日志输出。其中最常见的原因就是ASP.NET的权限——ASP.NET的aspnet_wp.exe或w3wp.exe可能没有对NLog配置文件中指定目录的写入权限。NLog对于其自身运行中发生的异常有着很强的监测能力。如下设定可以将这些监测结果输出至指定位置,或是对这些异常进行相应的处理(默认设定将忽略自身异常):

  • <nlog throwExceptions="true" />- 当NLog自身掷出异常时,该选项可以将异常掷回日志的调用者。在开发过程中,这个设定将变得非常有用,能够迅速帮助我们定位异常的位置以及原因。而当程序开发结束并部署到应用环境时,应该尽快设定throwExceptions为false,免得NLog自身的异常导致整个应用程序的崩溃。
  • <nlog internalLogFile="file.txt" />- 让NLog将自身运行过程中的日志信息(包括可能出现的异常)写入到文件中。
  • <nlog internalLogLevel="Trace|Debug|Info|Warn|Error|Fatal" /> - 选择写入内部日志的记录等级。该等级设定的越高,相应的输出日志文件将越小。
  • <nlog internalLogToConsole="false|true" /> - 将内部日志信息发送至控制台。
  • <nlog internalLogToConsoleError="false|true" /> - 将内部日志信息发送至标准异常输出(stderr)。

 

异步处理、包装器(Warpper)以及复合输出目标

NLog的包装器和复合输出目标特性让我们能够修改输出目标的默认行为,这种修改体现在如下几个方面:

  • 异步处理(向目标输出将用单独的线程处理)
  • 异常时自动重试
  • 负载平衡
  • 缓存 
  • 过滤 
  • 备用输出目标(主输出目标失败时启用备用输出目标)
  • 其他,请参考http://www.nlog-project.org/targets.html

只要在配置文件中将若干个target节点嵌套起来,即可完成对包装器或复合输出目标的定义。嵌套深度没有任何限制。例如为某个输出目标添加异步处理以及异常自动重试功能,只要按照如下代码配置NLog即可:

<targets> 
  <target name="n" xsi:type="AsyncWrapper"> 
    <target xsi:type="RetryingWrapper"> 
      <target xsi:type="File" fileName="${file}.txt"/> 
    </target> 
  </target> 
</targets> 

 

异步处理特性极为常用,因此NLog提供了一种简写方式——即<targets async="true" />,这样该输出目标将自动应用AsyncWrapper包装器。

 

以编程方式进行配置

某些情况下我们可能不愿用配置文件来配置NLog,而是选择使用NLog的配置API进行。对这些API的详细介绍已经超过了本文的范围,所以我们这里仅仅简单介绍一些。若希望以编程的方式对NLog进行配置,我们需要:

  1. 创建一个LoggingConfiguration对象,用来保存配置信息
  2. 至少创建一个输出目标对象
  3. 设置该输出目标对象的属性
  4. 设置LoggingRule对象,并将其添加到LoggingConfiguration对象的LoggingRules集合中
  5. 启用该LoggingConfiguration对象(将LogManager.Configuration设定为该LoggingConfiguration对象即可)

下面的代码片段以编程方式创建了两个输出目标对象——支持颜色的控制台和文件,并将记录等级等于或高于Debug的日志信息发送至这两个输出目标:

using NLog; 
using NLog.Targets; 
using NLog.Config; 
using NLog.Win32.Targets; 
 
class Example 
{ 
    static void Main(string[] args) 
    { 
        // Step 1. Create configuration object 
         
        LoggingConfiguration config = new LoggingConfiguration(); 
         
        // Step 2. Create targets and add them to the configuration 
 
        ColoredConsoleTarget consoleTarget = new ColoredConsoleTarget(); 
        config.AddTarget("console", consoleTarget); 
         
        FileTarget fileTarget = new FileTarget(); 
        config.AddTarget("file", fileTarget); 
         
        // Step 3. Set target properties 
         
        consoleTarget.Layout = "${date:format=HH//:MM//:ss} ${logger} ${message}"; 
        fileTarget.FileName = "${basedir}/file.txt"; 
        fileTarget.Layout = "${message}"; 
         
        // Step 4. Define rules 
         
        LoggingRule rule1 = new LoggingRule("*", LogLevel.Debug, consoleTarget); 
        config.LoggingRules.Add(rule1); 
 
        LoggingRule rule2 = new LoggingRule("*", LogLevel.Debug, fileTarget); 
        config.LoggingRules.Add(rule2); 
         
        // Step 5. Activate the configuration 
 
        LogManager.Configuration = config; 
         
        // Example usage 
 
        Logger logger = LogManager.GetLogger("Example"); 
        logger.Trace("trace log message"); 
        logger.Debug("debug log message"); 
        logger.Info("info log message"); 
        logger.Warn("warn log message"); 
        logger.Error("error log message"); 
        logger.Fatal("fatal log message"); 
    } 
}

 

 

NLog还能干点儿啥?

NLog supports some more logging scenarios, which couldn't be fully described here. See the links below for more information:

除此之外,NLog还支持一些更加复杂的需要日志记录的场景。限于篇幅,这里无法一一列出,若你对其感兴趣,可以参考如下链接:

Last updated: 2006-07-10 11:32:55

 

译注and后记

CrazyCoder朋友将加入到NLog文档的翻译过程中,他目前已经完成了对NLog配置文件这一节的翻译,不日即将发布。我非常感谢CrazyCoder的无私奉献精神!

由于某些原因,这一段时间我又会忙起来了…………可能不会如这一个月一样这样频繁地更新这个Blog,当然对于留言,我仍会尽量及时答复的。十分感谢朋友们一贯的支持!

虽然很不情愿,但是很有可能这个《NLog文章系列》也没办法继续写下去了……我真的非常希望有热心的朋友可以参与进来,既可以帮助开源社区的发展,也可以学习到新的知识,与朋友们进行交流,更能够顺便提高自己的英文能力。

如果你愿意奉献出自己的一点点时间,参与《NLog文章系列》的翻译,烦请你和我联系。参与翻译之后,如果你有能力且愿意的话,我也十分愿意尽自己微薄之力,帮你和出版社联系并翻译出版真正的图书。

YOLOv11改进策略【Head/分割头】| 结合CVPR-2024 中的DynamicConv 动态卷积 改进分割头, 优化模型(独家改进) 在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。 阅读详情

相关推荐

最新首发——boss直聘爬虫

本文介绍了使用Python开发Boss直聘爬虫的核心思路和技术要点。通过模拟浏览器访问搜索页面获取Cookie,然后构建API请求获取职位数据。关键步骤包括:1)使用DrissionPage库初始化浏览器;2)模拟用户浏览行为获取必要参数;3)设置完整的请求头信息;4)通过POST请求获取JSON格式的职位数据。文章提供了详细的代码实现,包括浏览器模拟、API请求构建、数据处理等核心功能模块,并强调了最新版接口改为POST访问的特点。该爬虫可自动翻页采集数据并保存为Excel文件,适用于安全实习等职位信息的

2301_79735033的博客 3317

c#Nlog文本日志,控制台日志,事件查看器日志(亲测有效)

以上只能满足控制台的日志输出,,而且事件管理器linux是没有的。无法满足项目中日志文件的需求,这时候我们就需要用到nlog进行一些复杂的日志输出。Logging.Console的nuget引用包括了依赖注入需要的引用所以就无需下载依赖注入需要的nuget,如对依赖注入的nuget。我已对文件进行调整方便展示效果,过多就不细说了,具体属性意思可看注释,多的可以去nlog官网看文档。这时候就自动创建文本日志了,我设置放在bin文件的根目录下了,大家可去自己设置的路径下查看。然后我们搭建依赖注入的框架。

Smooth_Sailing_的博客 5220

xsens IMU配置

1.安装驱动 sudo apt-get update sudo apt-get install ros-kinetic-xsens-driver 2.配置IMU 设置输出四元数,加速度、角速度、地磁 cd /opt/ros/kinetic/lib/xsens_driver python mtdevice.py --configure "oq,aa,wr,mf" 3.启动IMU roslaunch xsens_driver xsens_driver.launch 转(https://www.cnblo

qq_41585680的博客 2325

C#中使用NLOG步骤

步骤1:项目中加入NLOG库打开“工具”->“NuGet包管理器”,搜索“NLOG”,安装“NLog”和“NLog.Windows.Forms”两个库,如下图所示步骤2:添加引用具体路径见下图 步骤3:增加NLog.config文件和NLog.xsd文件可以从其它位置上COPY过来,也可以自己编写;NLog.config文件为LOG的配置文件,具体语法和意义见我的另一篇博文说明;NLog.xsd是语法文件,不用改动步骤4:在程序中增加引用 步骤5:设置config文件复制到输出目录 步骤6:使用 得到

nixoncheng的博客 4126

Cadence SpectreRF仿真避坑指南:PSS和Pnoise设置详解(附实战案例)

本文详细解析了Cadence SpectreRF中PSS(周期稳态分析)和Pnoise(周期噪声分析)的关键设置技巧,帮助模拟IC设计工程师避开常见仿真陷阱。通过实战案例分享,涵盖引擎选择、Beat Frequency计算、噪声类型配置等核心参数优化策略,提升仿真精度与效率。特别针对开关电容电路和振荡器等复杂场景提供专业解决方案。

weixin_42613501的博客 602

无网络环境部署:手动获取并安装OneNote for Windows 10完整指南

本文提供了一份详尽的OneNote for Windows 10离线安装指南。针对无网络或内网隔离环境,详细介绍了如何从官方渠道获取正确的产品ID,利用第三方工具下载纯净的.appxbundle安装包,并解决系统兼容性与依赖框架问题。最后,通过PowerShell管理员命令完成安全部署,是IT管理员和高级用户在离线环境下部署UWP应用的实用参考。

loss4bartender的博客 495

C# 中使用NLog记录日志

C# 中使用NLog记录日志

bazinga_y的博客 4099

SAP公司间采购后台配置及前台操作详解

公司间采购后台配置及前台操作详解 SAP 实施中公司间交易几乎每个项目都会有此业务需求,比如内地很多公司都会在香港设置贸易型子公司。通过香港公司接单,然后转内地公司生产,或内地公司通过香港公司采购进口原材料,这些业务必然会涉及到公司间交易,下面我将详细说明下SAP是如何实现这种业务场景的,供大家参考。 配置前必须前台先创建公司间供应商主数据和客户主数据 1. 创建相应的客户主数据 功能说明 公司间...

weixin_40672823的博客 1万+

C# Winform NLog的使用笔记

NLog是一个开源的、灵活的、可扩展的日志记录库,用于.NET平台。它提供了强大的日志记录功能,可以帮助开发人员在应用程序中实现高效的日志记录和跟踪。它提供了一种简单且灵活的方式来在应用程序中记录日志信息。NLog支持多种日志目标(如文件、数据库、网络等),并且可以根据需要进行配置和扩展。它具有高性能和低内存消耗的特点,并且可以通过配置文件或代码进行灵活的日志记录设置。NLog还支持日志级别、日志过滤、日志格式化等功能,使开发人员能够根据实际需求对日志进行管理和分析。

weixin_46158019的博客 3249

深入LSM6DSL的FIFO连续模式:基于STM32和MEMS库的数据流高效处理指南

本文深入探讨了LSM6DSL的FIFO连续模式,结合STM32硬件平台和ST官方MEMS库,提供了高效的数据流处理方案。通过优化I2C通信时序、中断驱动设计以及动态ODR调整,实现低功耗数据采集与处理,显著提升嵌入式传感器应用的性能和续航能力。

weixin_30387799的博客 348

tsfknn 预测R语言中的时间序列

rolling参数应该设置为FALSE,这使得最后的18个观测值成为测试集,其余的作为训练集;如果我们将rolling参数设置为默认值TRUE,那么测试集就不会是一个恒定的向量。lag 滞后参数表示时间序列数据的滞后值。在这个例子中,由于我们的时间序列数据是月度的,我们将参数设置为1:12。作为药品福利计划的一部分,澳大利亚健康保险委员会记录的属于ATC代码A10的产品的每月政府支出(百万美元)。我们将使用tsfknn包,它可以用来预测R语言中的时间序列。格式:ts类别的月度时间序列。

Mrrunsen的博客 323

.Net Core 2配置 Nlog 日志组件学习笔记 [1]

开发工具:Visual Studio 2017 要求:.NET 4.6+ or .NET standard 2 [1] 新建一个.net core项目且编辑csproj文件 或者直接用nuget management Nlog最新版本:   NLog.Web.AspNetCore4.8+ csproj文件: <PackageReference Includ...

521

35、使用 Geo 创建 GitLab 的分布式只读副本

本文详细介绍了如何使用GitLab Geo功能创建分布式只读副本,涵盖数据库主从配置、SSH密钥查找方式更改、通过Web UI添加从节点、激活哈希存储及状态检查等关键步骤。同时提供了常见问题解答和配置流程图,帮助用户快速部署并维护Geo集群,实现跨地域的高效数据同步与高可用架构。

chair的专栏 80

NLog文章系列——入门教程(上)

作者:Jarosław Kowalski <jaak@jkowalski.net> 翻译:Dflying Chen:http://dflying.cnblogs.com/ 原文:http://www.nlog-project.org/tutorial.html 本文为《NLog文章系列》的第二篇,将用实例程序演示用NLog书写日志的方法。 应用程序跟踪介绍 很久以...

weixin_30555753的博客 118

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

NLog文章系列——入门教程(中)

  作者:Jarosław Kowalski &lt;jaak@jkowalski.net&gt; 翻译:Dflying Chen:http://dflying.cnblogs.com/ 原文:http://www.nlog-project.org/tutorial.html 本文为《NLog文章系列》的第三篇,将继续描述演示用NLog书写日志的方法。本想今天就能搞定整个入门教程,无奈时...

weixin_34199405的博客 104

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NLog文章系列——入门教程(转)

作者:Jarosław Kowalski &lt;jaak@jkowalski.net&gt; 翻译:Dflying Chen:http://dflying.cnblogs.com/ 原文:http://www.nlog-project.org/tutorial.html 本文为《NLog文章系列》的第二篇,将用实例程序演示用NLog书写日志的方法。   应用程序跟踪介绍 很久...

weixin_34208283的博客 95

NLog文章系列——如何配置NLog

作者:Jarosław Kowalski <jaak@jkowalski.net> 翻译:CrazyCoder(由衷感谢他的热心!!) 原文:http://www.nlog-project.org/config.html 更多关于NLog的中文文章,请参考《NLog文章系列》。 NLog支持以多种不同方式配置,目前同时支持直接编程和使用配置文件两种方法。本文...

weixin_30729609的博客 636

NLog文章系列——系列文章目录以及简要介绍

早晨看到TerryLee的文章《.NET开源项目介绍及资源推荐:日志记录》,其中说到NLog这个同样开源且非常不错的日志记录工具却没什么中文资料。在TerryLee介绍前,我也不知道NLog这个东西,于是就随便尝试了一下。 简单使用了一下之后,觉得NLog真的非常不错。如此漂亮的类库却没有中文资料,似乎有些可惜,于是尝试联系其作者Jaroslaw Kowalski请求翻译NLog网站中的一部分内...

weixin_33962621的博客 208

Nlog详解

NLog是一个基于.NET平台编写的日志记录类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。官网地址:https://nlog-project.org/文档地址:https://github.com/NLog/NLog/wiki (2)代码实现 (3)运行结果 (2)配置文件 (3)代码实现 (4)运行

李宥的博客 1万+
上一篇: 静态链接库LIB和动态链接库DLL的区别 创建和示例
下一篇: 字符编码 ascii unicode utf-8 gb2312
ning0123456
博客等级 码龄20年 12粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值