- 浏览: 680243 次
- 性别:
- 来自: 石家庄
-
文章分类
最新评论
-
abao1:
老贾 在安装IDEA的过程中,在激活步骤时,按如下操作即可: ...
IntelliJ IDEA 2016注册方法和注册码 -
bo_hai:
./usr/bin/java: symbol lookup ...
jmagick安装步骤 -
wxcking:
不错的, 收藏一下
JAVA使用POI生成Excel文件 -
zgyfh:
大哥,密码是多少啊?zgyfh@tom.com谢谢了!新手学习 ...
WPF做的必备示例 -
记忆无泪:
jiasongmao 写道你的邮箱是多少,我可以发源代码到邮箱 ...
WPF做的必备示例
自动重新配置
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进行配置,我们需要:
- 创建一个LoggingConfiguration对象,用来保存配置信息
- 至少创建一个输出目标对象
- 设置该输出目标对象的属性
- 设置LoggingRule对象,并将其添加到LoggingConfiguration对象的LoggingRules集合中
- 启用该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还支持一些更加复杂的需要日志记录的场景。限于篇幅,这里无法一一列出,若你对其感兴趣,可以参考如下链接:
- 异常日志记录 - http://sourceforge.net/mailarchive/forum.php?thread_id=6766833&forum_id=41984
- 条件表达式语言 - http://www.nlog-project.org/conditions.html
- NLogViewer - 实时的日志记录查看器(当前还在pre-alpha阶段)- http://viewer.nlog-project.org/
转载地址:http://www.cnblogs.com/dflying/archive/2006/12/07/585787.html
- nlog-1.0-setup.rar (2.8 MB)
- 下载次数: 11
发表评论
-
美了哭了,AduSkin是我见过最好看的WPF控件库
2020-03-14 19:58 721原文地址:https://www.pianshen.com/ ... -
使用NSSM把.Net Core部署至 Windows 服务
2019-10-16 08:52 579转自:https://www.cnblogs.com/emr ... -
玩转ASP.NET Core中的日志组件
2019-01-06 16:11 757转自:https://www.cnblogs.com/ ... -
CentOS 7 部署 ASP.NET Core 应用程序
2019-01-04 13:56 550CentOS 7 部署 ASP.NET Core 应用程序 ... -
GeckoWebBrowser实现自定义打印
2018-12-22 00:26 812nsIWebBrowserPrint print ... -
Winform桌面程序如何使用Geckofx45
2018-12-05 14:50 2442NuGet管理GeckoFx PM> Inst ... -
NLog的介绍使用
2018-09-28 17:36 1117NLog是什么 NLog是一个基于.NET平台编写的类库, ... -
常用的.net开源项目
2018-09-28 17:01 476常用 Json.NET:Json.Net ... -
高效实用的.NET开源项目
2018-09-28 16:58 5011.Akka.NET: 概述:更轻松地构建强大的并发 ... -
OCR框架整理
2017-08-16 09:29 609泰比ABBYY OCR SDK开发包 Asp ... -
使用Aspose.word导出word报告
2017-04-09 11:49 1668最近在做一个.net项目需要实现网站导出word报告功能,最 ... -
利用Aspose.Words 完美生成word试卷
2017-04-09 11:43 5345aspose.word生成word文档 public cl ... -
java使用wsimport生成服务代码时报错的解决办法
2017-01-18 11:27 1727今天遇到了WebService的问题:在使用jdk命令wsi ... -
OCR文字识别系统
2016-12-21 22:14 491慧视OCR文字识别系统 增值税专用发票扫描识别系统 ... -
asprise-ocr:验证码识别
2016-12-21 22:17 794asprise-ocr http://asprise ... -
jieba中文分词的.NET版本:jieba.NET
2015-09-10 09:36 832转自:http://www.cnblogs.com/ande ... -
通用身份验证类:AuthenticationCookie
2015-09-06 09:00 742/// <summary> /// C ... -
KwCombinatorics排列组合类库
2015-08-06 17:34 637KwCombinatorics类库的主页是:http: ... -
CefSharp嵌入式浏览器
2015-08-06 15:21 1084日常开发中,我们需要将一些Web页面嵌入到桌面客户端软件中。 ... -
C#开源框架(整理)
2015-07-27 09:32 2376http://www.cnblogs.com/c ...
相关推荐
在代码中,你可以使用`ILogger`接口记录日志,NLog会根据配置自动处理输出: ```csharp private readonly ILogger _logger; public MyClass(ILogger<MyClass> logger) { _logger = logger; } public void ...
现在,你可以使用`logger`对象记录日志信息,例如: ```csharp try { // 业务逻辑 } catch (Exception ex) { logger.Error(ex, "发生了一个错误"); } ``` 在上述代码中,`logger.Error()`方法捕获并记录异常信息...
2. 记录日志:使用Logger对象提供的方法如`Info()`, `Warn()`, `Error()`等,根据日志级别记录信息。例如: ```csharp logger.Info("这是信息级别的日志"); logger.Error("发生了错误", ex); // 传入异常对象,...
在.NET 6中使用Serilog进行日志收集,不仅为开发者提供了强大的日志记录功能,还通过灵活的配置和丰富的输出选项,为日志管理提供了极大的便利。随着应用复杂性的增加,Serilog作为一种可靠且功能全面的日志解决方案...
它允许开发者以键值对的形式记录日志,方便后期分析。 在实际应用中,错误日志的记录应遵循以下最佳实践: - **详细程度**:确保日志包含足够的信息以重现问题,例如异常类型、堆栈跟踪、请求URL、用户信息等。 - ...
接下来,我们需要在C#代码中初始化NLog并使用它来记录日志。在程序启动时,调用`NLog.Config.LoggingConfiguration.Configure()`方法加载配置文件,例如: ```csharp using NLog; using NLog.Config; // 加载配置...
设置NLog记录日志到数据库,我们需要完成以下步骤: 1. 安装NLog和NLog.Database扩展:通过NuGet包管理器安装NLog和NLog.Database,这两个包分别提供了基础的日志功能和数据库日志目标。 2. 配置NLog.config:创建...
在ASP.NET(C#)中,可以使用内置的`System.Diagnostics.Trace`类或者第三方的日志框架,如log4net、NLog等来实现。这些工具允许开发者设置不同的日志级别(如Debug、Info、Warning、Error等),以便在不同场景下记录...
文件文本控制台Email数据库网络中的其它计算机(通过TCP或UDP)基于MSMQ的消息队列Windows系统日志其他形式,请参考http://www.nlog-project.org/targets.html除此之外,每一条跟踪消息都可以自动带有上下文信息...
在C#代码中,引入Nlog并创建Logger实例,用于记录日志: ```csharp using NLog; ... private static Logger logger = LogManager.GetCurrentClassLogger(); ``` 当发生异常时,捕获并记录日志: ```csharp try { ...
学习Logging 组件的相关使用,使用NLog 将日志写入到文件记录。 Logging 使用 新建一个 ASP.NET Core 项目,为了方便,我选择Web 应用程序,改身份验证 改为 不进行身份验证。 新建好以后,会自动引用好对应的 ...
该扩展允许开发者直接将NLog记录的日志信息发送到OpenObserve服务中,从而可以利用OpenObserve提供的各种分析和监控功能。 通常情况下,开发者可以通过NuGet包管理器来安装NLog和相关的扩展目标。例如,安装...
标题 "dotNetCore 集成NLog 写入数据库(oracle)和本地文件及服务间调用分布式追踪" 涉及了几个关键的IT技术领域,包括 .NET Core、NLog、Oracle数据库集成、日志记录以及分布式追踪。下面将详细解释这些知识点。 ...
4. **记录日志**:在代码中调用类库提供的API,如`Log.Info()`、`Log.Error()`等方法记录日志。 5. **查看日志**:通过控制台、文件或其他输出方式进行日志查看。 由于本问题未提供"Dingy.Log"的详细源码和使用示例...
在代码中使用NLog,首先需要初始化`NLog.Logger`实例,然后调用相应的方法记录日志。例如: ```csharp using NLog; public class MyClass { private static readonly Logger logger = LogManager....
在NLogDemo项目中,你可以看到一个简单的示例,演示了如何配置NLog以及如何在代码中使用`Logger`对象来记录日志。通过这个Demo,你可以了解如何将NLog v4.7.11集成到你的.NET项目中,并根据项目需求定制日志策略。 ...
在ASP.NET开发中,日志记录是一个至关重要的实践,它帮助开发者追踪应用程序的运行状态,定位和解决问题。本文将深入探讨如何使用`Common.Logging.dll`和`Common.Logging.Log4Net.dll`这两个DLL文件来实现ASP.NET中...
NLog是一个简单灵活的.NET日志记录类库。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。