【问题标题】:Nlog Write logs in files by conditionsNlog 按条件将日志写入文件
【发布时间】:2020-05-13 10:00:27
【问题描述】:

我的 Nlog 配置文件中有以下目标

<targets>
<target name ="loggerCreatePortal" xsi:type="File" 
        fileName="c:/CRM Trace Logs/Portal2.0/${shortdate}_createPortalRegForm.log"
        layout="${logger} | ${longdate} | ${level:uppercase=true} | ${message}"
        createDirs="true"/>

<target name ="loggerCreateRegData" xsi:type="File"
        fileName="c:/CRM Trace Logs/Portal2.0/${shortdate}_createPortalRegFormData.log"
        layout="${logger} | ${longdate} | ${level:uppercase=true} | ${message}"
        createDirs="true"/>

</targets>

<rules>

<logger name="loggerCreatePortal" minlevel="Debug" writeTo="createPortalRegForm"/>
<logger name="loggerCreateRegData" minlevel="Debug" writeTo="createPortalRegFormData"/>

</rules>

在我的主课中:

public class PortalController : ApiController
{
    private static readonly Logger loggerCreatePortal = LogManager.GetLogger("loggerCreatePortal");
    private static readonly Logger loggerCreateRegData = LogManager.GetLogger("loggerCreateRegData");

    [HttpPost]
    [Route("createPortalRegForm")]
    public Response createPortalRegForm([FromBody] ExpressPoll expressPoll)
    {
        loggerCreatePortal.Info("Test 1");
        IOrganizationService _orgService = CrmConnect.GetConnection();
        ...
    }

    [HttpPost]
    [Route("createPortalRegFormData")]
    public Response createPortalRegFormData([FromBody] FilledExpressPoll filledExpressPoll)
    {
        loggerCreateRegData.Info("Test 2");
        IOrganizationService _orgService = CrmConnect.GetConnection();
        ...
    }

我想将来自 CrmConnect 类的日志写入用于指定记录器的日志文件。如果应用调用路由 CreatePortalRegForm,则来自 CrmConnect 类的日志应仅写入目标 loggerCreatePortal 的文件中。

我的 CrmConnect 课程

public static class CrmConnect
{
    private static readonly Logger loggerConn = LogManager.GetLogger("loggerConn");

    public static IOrganizationService GetConnection()
    {
       ....;
       if (conn.IsReady)
       loggerConn.Info("Conn successfull");
       ....
    }

我需要在配置文件中添加什么目标或规则?

【问题讨论】:

  • 您的记录器被称为"loggerConn",并且您的记录器规则都不匹配该记录器名称。您是否尝试过修复 NLog.config 中的记录器规则?
  • @RolfKristensen 嗨,目前我还没有为“loggerCon”配置规则。我的问题是我需要写什么规则才能得到我想要的
  • 创建了一个答案,我已将 CrmConnect 添加到记录器规则列表中。

标签: c# asp.net logging nlog nlog.config


【解决方案1】:

您必须为您的目标添加一个rule,指定您要从中捕获日志的类以及哪个日志级别:

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

    <rules>
        <logger name="My.NameSpace.ClassName" minlevel="Info" writeTo="logconsole" />
    </rules>

在此示例中,目标 logfile 将仅从 ClassName 获取来自 My.Namespace 命名空间的日志

【讨论】:

  • 嗨 Kebek 我忘了写我的规则。当然,我的配置文件中有它。我已经编辑了我的问题。
【解决方案2】:

您的规则指向不存在的目标名称:

<rules>
   <logger name="loggerCreatePortal" minlevel="Debug" writeTo="createPortalRegForm"/>
   <logger name="loggerCreateRegData" minlevel="Debug" writeTo="createPortalRegFormData"/>
</rules>

这可能有效:

<targets>
   <target name="createPortalRegForm" xsi:type="File" 
        fileName="c:/CRM Trace Logs/Portal2.0/${shortdate}_createPortalRegForm.log"
        layout="${logger} | ${longdate} | ${level:uppercase=true} | ${message}"
        createDirs="true"/>
   <target name="createPortalRegFormData" xsi:type="File"
        fileName="c:/CRM Trace Logs/Portal2.0/${shortdate}_createPortalRegFormData.log"
        layout="${logger} | ${longdate} | ${level:uppercase=true} | ${message}"
        createDirs="true"/>
</targets>

<rules>
   <logger name="CrmConnect" minlevel="Debug" writeTo="createPortalRegForm"/>
   <logger name="loggerCreatePortal" minlevel="Debug" writeTo="createPortalRegForm"/> 
   <logger name="loggerCreateRegData" minlevel="Debug" writeTo="createPortalRegFormData"/>
</rules>
  • &lt;logger name= 应该匹配 LogManager.GetLogger(name)
  • &lt;logger writeTo= 应该匹配 &lt;target name="

另请参阅:https://github.com/nlog/nlog/wiki/Tutorial,以及 &lt;logger name-filter 的工作原理:https://github.com/nlog/nlog/wiki/Configuration-file#logger-name-filter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多