在我的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>
在我的Main类中,我想把CrmConnect类的日志写到指定的日志器上。
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");
....
}
我需要在配置文件中添加什么目标或规则?
您将不得不添加一个 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
命名空间
你的规则指向了不存在的目标名称。
<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>
<logger name=
应该符合 LogManager.GetLogger(name)
<logger writeTo=
应与 <target name="
也可以参考。https:/github.comnlognlogwikiTutorial 以及如何 <logger name
-过滤器工作了。https:/github.comnlognlogwikiConfiguration-file#logger-name-filter。