【问题标题】:Duplicating logs from multiple targets into single one将多个目标的日志复制到一个目标中
【发布时间】:2017-03-14 07:22:58
【问题描述】:

我有多个文件目标:

var config = new LoggingConfiguration();
for (int i = 1; i <= 5; i++)
{
    var fileTarget = new FileTarget();
    fileTarget.Layout = @"${date:format=dd-MM HH\:mm\:ss}[${var:passNumber" + i.ToString() + "}][${var:TestName" + i.ToString() + "}] - ${message}";

    fileTarget.FileName = string.Format(@"log-cell{0}.txt", i);
    fileTarget.KeepFileOpen = false;
    config.AddTarget(string.Format("file{0}", i), fileTarget);

    var ruleFile = new LoggingRule(string.Format("{0}", i), LogLevel.Debug, fileTarget);
    config.LoggingRules.Add(ruleFile);
}
LogManager.Configuration = config;

然后我可以访问单个规则并写入相应的目标:

LogManager.Configuration.Variables["passNumber1"] = 33.ToString();
LogManager.Configuration.Variables["TestName1"] = "Test1";
LogManager.GetLogger("1").Debug("Test1");

LogManager.Configuration.Variables["passNumber2"] = 44.ToString();
LogManager.Configuration.Variables["TestName2"] = "Another Test";
LogManager.GetLogger("2").Debug("Test2");

这可以正常工作并为每个规则创建不同的文件。现在我还想要一个单独的RichTextBoxTarget 或者说特殊目标:

  • 所有可能的日志都将被复制或仅达到选择性级别
  • 布局将包含与文件目标相同的格式/变量

我不确定如何让单个目标具有多个布局。我的尝试是将以下内容添加到循环中

var ruleWnd = new LoggingRule(string.Format("{0}", i), LogLevel.Debug, rtTarget);
config.LoggingRules.Add(ruleWnd);

这当然会登录消息,但我丢失了变量。 所以问题是如何添加单个目标,它将捕获所有日志(或级别控制器),包括定义的变量。

【问题讨论】:

    标签: c# nlog


    【解决方案1】:

    所以问题是如何添加单个目标,它将捕获所有日志(或级别控制器),包括定义的变量。

    变量是全局级别的,所以你只能使用一个。

    在这种情况下,“事件属性”就是您要查找的位置。用法:

    Logger logger = LogManager.GetCurrentClassLogger();
    LogEventInfo theEvent = new LogEventInfo(LogLevel.Debug, "", "Test1");
    theEvent.Properties["passNumber"] = 33;
    logger.Debug(theEvent);
    

    在您的配置中使用:

    ${event-properties:item=passNumber} 
    

    ${event-properties} docs

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      相关资源
      最近更新 更多