使用NLog进行日志记录的最佳或最有用的配置是什么?(只要它们有用,它们可以是简单的也可以是复杂的.)
我正在考虑一些示例,例如自动滚动特定大小的日志文件,更改布局(日志消息)是否存在异常,一旦发生错误就升级日志级别等.
以下是一些链接:
我正在写一个小文件转换实用程序.文件在放入目录时会自动转换.
我正在使用NLog进行日志记录.除了使用NLog.conf配置的中央日志文件(并接收生成的所有消息)之外,我还想为每个输入文件创建一个额外的日志文件,它具有相似的名称并包含在转换过程中写入的所有日志消息.
不幸的是,我似乎无法在运行时找到如何正确添加新文件目标和相应规则.我希望Logger在转换过程中所有对象都写入新的日志文件.
我试过类似的东西
var logfile = new NLog.Targets.FileTarget();
logfile.FileName = fileName + ".log";
logfile.KeepFileOpen = true;
logfile.Initialize();
var rule = new NLog.Config.LoggingRule("*", logfile);
NLog.LogManager.Configuration.LoggingRules.Add(rule);
NLog.LogManager.ReconfigExistingLoggers();
//
// Proceed with converting file
//
logfile.Flush();
NLog.LogManager.Configuration.LoggingRules.Remove(rule);
NLog.LogManager.ReconfigExistingLoggers();
Run Code Online (Sandbox Code Playgroud)
但是没有创建日志文件.
我错了什么?任何的想法?
有没有一种方法可以从<ApplicationSettings>NLog布局变量中的web.config部分获取值?
我已经在我的web.config中存储了SMTP详细信息,并且不希望复制这些设置只是为了在我的NLog.config中使用.
理想情况下,我想做类似的事情:${aspnet-config:SmtpHostServer}
然后从web.config中获取值
如何使用C#中的变量动态更改FileName?我的想法是创建一个像日志文件Log_<UserId_From_DB>_${date:format=yyyy-MM-dd}.log.有任何想法吗?
我的应用程序为应用程序本身创建了一个日志,因此记录它何时被激活,以及在应用程序级别发生了什么.
应用程序以"配置文件"为中心 - 用户加载一个配置文件,告诉应用程序在何处/何时/什么/如何.所以我还想为每个配置文件创建一个日志,以便在每次运行配置文件时记录进度.
到目前为止没有问题...除了我希望配置文件日志与配置文件本身一起存储,所以这意味着我需要动态配置NLog,所以我可以在运行时告诉它fileTarget路径.
但是,我还想将我想要使用的标准布局存储为NLog.config中的变量; 这似乎是我所读过的常用方法.
但是,在以下行
fileTarget.Layout = "${myLayout}"
Run Code Online (Sandbox Code Playgroud)
...我得到一个ArgumentException:
LayoutRenderer cannot be found: 'myLayout'
Run Code Online (Sandbox Code Playgroud)
目前,我的布局变量很简单:
<variable name="myLayout" value="${message}" />
Run Code Online (Sandbox Code Playgroud)
是不是您不能使用变量来通过API指定布局?如果是这样的话,我会感到惊讶.或者我在哪里出错了?
解决方案很简单 - 我可以fileTarget.Layout使用手动指定的布局填充,但是,我很想知道计划A是否可以工作.