NLog - 仅在调试时记录

2024-04-24

以这个简单的 NLog 示例配置为例:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <targets>
        <target name="logfile" xsi:type="File" fileName="file.txt" />
    </targets>

    <rules>
        <logger name="*" minlevel="Debug" writeTo="logfile" />
    </rules>
</nlog>

如何将其设置为仅在调试时记录,而不是在生产中运行时记录?

EDIT:

让事情变得更具挑战性:我的 NLog 配置文件是集中的,在所有应用程序/服务/站点上共享。所以我想避免改变每个项目,而只是修改配置文件。


一个简单的解决方案是有一个NLog.config文件(其内容将被覆盖 - 您稍后会看到),加上每个解决方案配置/环境一个 NLog 配置文件(比方说,NLog.debug.config and NLog.release.config)。例如:

然后你配置一个Pre-build event command line复制与当前活动配置对应的配置文件:

您应该将完整的命令粘贴到此处:

del "$(ProjectDir)NLog.config"

if "$(ConfigurationName)"=="Debug" (
  copy "$(ProjectDir)NLog.debug.config" "$(ProjectDir)NLog.config"
) else (
  copy "$(ProjectDir)NLog.release.config" "$(ProjectDir)NLog.config"
)

这将复制NLog.debug.config to NLog.config(有效地覆盖它)如果 DEBUG 是当前活动配置/环境,否则它将复制NLog.release.config.

较短的版本如下所示(但请注意文件命名差异):

del "$(ProjectDir)NLog.config"
copy "$(ProjectDir)NLog.$(ConfigurationName).config" "$(ProjectDir)NLog.config"

另一件需要注意的事情是,在编译过程中,编译器会抛出与 NLog 相关的重复声明的各种警告。原因是编译器会为 NLog 找到 2 个(或更多)不同的配置文件,并且它们的声明会发生冲突。为了解决这个问题,你必须改变Properties你的每一个extraNLog配置文件以使构建操作不复制它们。例如:

不要重复自己

最后,您可能不想复制公共/共享目标|规则|诸如此类的东西,以避免在多个文件中更改它们。为此,您可以将这些公共/共享部分移动到另一个文件并使用 https://github.com/nlog/NLog/wiki/Configuration-file#include-files.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NLog - 仅在调试时记录 的相关文章

  • 将 NLog 与 MEF 结合使用的最佳方式是什么?

    我想知道将 NLog 与托管可扩展性框架 MEF 结合使用的最佳方法是什么 我有一个支持使用 MEF 架构的插件的应用程序 导入和导出等 我想向我的应用程序添加日志记录功能 作为一个日志组件 我想使用 NLog 你会推荐什么 1 为 NLo
  • NLog 使用 NLog.config 动态更改文件名

    如何使用 C 中的变量动态更改文件名 我的想法是创建一个日志文件 例如Log
  • 如何引用同一 appsettings.json 文件中的另一个值?

    我需要在 appsettings json 中的两个位置使用数据库连接字符串 是否可以在 json 文件中引入公共变量或 json path 相关引用以避免潜在的问题 如果能在不接触 C 代码的情况下拥有它 那就太棒了 Connection
  • NLog 内部记录器的编程配置

    任何人都可以帮助 NLog 内部记录器的编程配置吗 我有各种目标 电子邮件目标不发送任何电子邮件 尽管它确实有日志记录规则 所以我希望通过启用内部日志来获得更多见解 但是 我进行了编程配置 但没有找到任何在代码中设置内部记录器的资源 索姆斯
  • NLog:如何缩进范围并使用范围标题?

    如何在 NLog 中启用以下功能来生成所示的输出 using logger BeginScope Starting processing logger LogInformation Algorithm1 Initalized logger
  • 建议设计:应用程序中几乎每个对象都有记录器

    我正在写一个应用程序 我使用 NLog 进行日志记录 在这个应用程序中 几乎每个对象都可以写入日志 我为此定义了受保护的成员 protected Logger logger protected virtual Logger Logger g
  • 使用 Autofac 传入 NLog 声明类的类型

    继从这个问题我希望 autofac 将声明对象的类型注入到 NLog 服务的构造函数中 以便它可以正确记录正在记录条目的类型 我的 NLogService 类看起来像这样 public class NLogService ILogServi
  • 解析 nlog.config 时出现 NLog 异常 - 找不到目标:“EventLog”

    我正在开发一个C NET Core 2 2 Web API on 视觉工作室 2017 我实施NLog4 6 1 如上所述github https github com NLog NLog Web wiki Getting started
  • NLog v2 可以与 Common.Logging 一起使用吗

    我今天尝试将它们一起使用 但发现版本不匹配 因为它正在寻找 NLog v1 Common Logging 支持 NLog v2 吗 如果没有 有人知道是否可以安全地使用程序集版本重定向吗 您可以简单地在 app config 或 web c
  • 访问 NLog 中的内存目标

    假设我的 nlog config 中有以下内容 取自http nlog project org documentation v2 0 1 html T NLog Targets MemoryTarget htm http nlog proj
  • NLog 未在所有级别上记录日志

    ASPNET Core 2 0 与最新的 Nlog 所有配置文件均正确加载 我的配置文件很简单 我只是希望它记录所有内容
  • NLog 上的配置转换不起作用

    我有一个 Web 项目 ASP NET MVC 4 项目 其中存储了许多配置网页配置 and in NLog config files 我有几个发布配置文件发布配置文件1 发布配置文件2当使用发布配置文件将我的 Web 项目部署到服务器时
  • 使用 NLog 的 Ninject 记录器

    我刚刚开始学习 Ninject 但遇到了记录器的问题 我目前有一个控制器 它有一个服务和记录器注入到构造函数中 如下所示 public ToolsController IToolsService toolsService ILogger l
  • Common.Logging 有其他选择吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么记录器建议每个类使用一个记录器?

    根据 NLog 的文档 大多数应用程序将为每个类使用一个记录器 其中记录器的名称与类的名称相同 这与 log4net 的操作方式相同 为什么这是一个好的做法 使用 log4net 每个类使用一个记录器可以轻松捕获日志消息的来源 即写入日志的
  • 依赖注入和命名记录器

    我有兴趣了解更多有关人们如何使用依赖注入平台注入日志记录的信息 尽管下面的链接和我的示例引用了 log4net 和 Unity 但我不一定会使用其中任何一个 对于依赖注入 IOC 我可能会使用 MEF 因为这是项目 大型 其余部分所采用的标
  • 将 nlog 中的记录添加到 dataType = date 的字段

    I use nlogdll 写入数据库 Oracle 与实体框架在行中 logger Log logLevel try 我在 nlog 日志中收到以下错误 文字与模板字符串不匹配 代码是 SetPropGDC LogEntity NLog
  • 无法加载 Exchange powershell 管理单元:“Microsoft.Exchange.Data.Directory.Globals”的类型初始值设定项引发异常

    我有以下代码 用于创建一个加载了 Exchange 2010 管理单元的 PowerShell 运行空间 Dim runspaceConfig RunspaceConfiguration Create Dim snapInException
  • NLog - 仅在调试时记录

    以这个简单的 NLog 示例配置为例
  • 使用 NLog 时保护电子邮件密码

    当使用 NLog 作为日志记录工具时 我们可以轻松地通过电子邮件发送消息 例如 这是使用 Gmail 作为 smtp 服务器的示例配置

随机推荐

  • 从 Lambda 向 AWS IoT Core 发布 MQTT 消息

    我是 AWS 世界的新手 目前正在开发一项 Alexa 技能 该技能只需向 AWS IoT Core 代理发布一条 mqtt 消息 与之前创建的 事物 和主题进行交互 目前我正在使用 boto3 但我不确定这是正确的路径 这是代码 但在部署
  • 移动 Safari - 视口设备高度未按预期工作

    我有一个网络应用程序 我试图在 iPad 3 上运行 当我拉起它时 该应用程序允许垂直滚动 但实际上不应该 我已经对其他网络应用程序执行了相同的过程 没有任何问题 并且不确定这次我错过了什么 在我的 html 的 head 元素内 我有以下
  • 如何使用 EditTextPreference 作为屏蔽密码文本字段?

    我有一个非常简单的问题 我有一个EditTextPreference我想用它来获取用户的密码 并且我希望它被屏蔽 我怎样才能做到这一点 下面是一个使用 xml 的简短示例
  • 对象切片,有优势吗?

    对象切片是指当子类被分配给基类时 对象失去一些属性或功能 就像是 Class A Class B extends A Class SomeClass A a new A B b new B Some where if might happe
  • 使用“in”关键字迭代 Javascript 数组

    貌似没明白这句话的意思inJavaScript 中的关键字 看看这个代码片段 http jsfiddle net 3LPZq http jsfiddle net 3LPZq var x 1 2 for i in x document wri
  • Onvif - 尝试了解它是如何工作的

    首先 我完全没有使用ONVIF的经验 我在一家公司获得了奖学金 并被要求与它一起工作 控制一些相机并从它们那里获取照片 但他们也不知道它是如何工作的 所以没有人可以帮助我很多 我正在阅读 ONVIF 网页上提供的规范 但我不太明白 我知道我
  • iOS 自定义标签栏

    我刚刚开始 iOS 开发 只是在玩 atm 我正在尝试将默认的选项卡栏按钮转换为更自定义的按钮 经过一番查看后 我发现您可以为每个按钮创建自定义状态 所以我这样做了 UIImage selectedImage0 UIImage imageN
  • 合并多个表

    我有很多表格描述了我的小公司的不同类型的支出和收益 并且我发现没有简单的方法来合并我的表格 就像我制作的这个例子一样 我希望在更新最后一个表时自动填充其他表的行 这样我就可以及时预见费用和收益 通过按日期升序自动排序绿色表 到目前为止 我发
  • python 中的结构体对象

    我想创建一个一次性的 结构 对象来保留各种状态标志 我的第一个方法是这样的 javascript风格 gt gt gt status object gt gt gt status foo 3 Traceback most recent ca
  • 如何在 Docker-Compose 中一起使用主机网络和任何其他用户定义的网络?

    我想将 Docker Compose 文件中定义的两个 Docker 容器相互连接 app and db 其中之一 app 也应该连接到host网络 容器应连接到通用的用户定义网络 appnet or default 使用嵌入式DNS来自
  • 如何在显示模态表时禁用 Cocoa 的默认动画?

    我想禁用 Cocoa 在显示模式表时执行的动画 Apple s 表编程指南 http developer apple com mac library documentation Cocoa Conceptual Sheets Concept
  • MySQL:什么是页面?

    在 MySQL 数据库的上下文中 我一辈子都不记得页面是什么 当我看到 8KB 页之类的内容时 这是否意味着每行 8KB 还是 数据库页是组织数据库文件中数据的内部基本结构 以下是有关 InnoDB 模型的一些信息 From 13 2 11
  • 使用 Apache Pig 的数据透视表

    我想知道是否可以在 Apache Pig 中一次性旋转一张表 Input Id Column1 Column2 Column3 1 Row11 Row12 Row13 2 Row21 Row22 Row23 Output Id Name V
  • 如何使 gradle processResources 任务更快

    我正在研究 Spring Boot 项目 并且我正在遭受构建时间的困扰 我的项目的 processResources 任务花费的时间太长 如果资源文件是最新的 大约只需要10秒 但如果文件至少更改一个 则需要几分钟的时间 这是因为一个资源库
  • Python 中图外的图例 - matplotlib

    我试图在 matplotlib 中的绘图之外放置一个相当广泛的图例 图例有相当多的条目 每个条目可能很长 但我不知道具体有多长 显然 这很容易使用 legendHandle plt legend loc center left bbox t
  • 使用毕加索库时目标不能为空

    我实现了一个listView使用 Picasso Library 2 4 0 我遇到了一个问题 发生了什么 我使用 Android Studio 启动应用程序 然后转到我实现的特定片段listView 一切看起来都很好 所有图像都正在加载
  • C# asp.net 中的 EVAL

    我将动态内容放置在绑定到对象数据源的数据列表中的内容占位符中 问题是我需要检查 EVAL 的值 这是代码
  • 将 mob() 树(partykit 包)与 nls() 模型结合使用

    我正在尝试使用基于模型的递归分区 MOB mob 函数 从partykit包 来分离使用导出的几条曲线nls 功能 我必须定义我的模型并确定起始值 我一直在尝试看看这是否可以与mob 功能无济于事 我尝试按照第 7 页上的示例进行操作 ht
  • 在 PHP 中显示数组值

    因此 我是第一次使用 PHP 并且尝试检索并显示数组的值 经过大量谷歌搜索后 我能找到的唯一方法是print r var dump or var export 然而 所有这些方法都会返回如下所示的内容 a gt apple b gt ban
  • NLog - 仅在调试时记录

    以这个简单的 NLog 示例配置为例