最简单的集中化方法可能是简单地记录到数据库,一个好处是多个应用程序和写入数据库比写入同一个日志文件更容易。对于每个应用程序,配置 NLog 以记录到数据库目标,对每个应用程序使用相同的数据库目标配置参数。您的 NLog.config 文件可能如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<!--
This file needs to be put in the application directory. Make sure to set
'Copy to Output Directory' option in Visual Studio.
-->
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Debug"
internalLogFile="nlog_log.log">
<targets async="true">
<target name="sqlexpress" xsi:type="Database">
<connectionString>
Data Source=.\SQLEXPRESS;Initial Catalog=LoggingDB;Integrated Security=True;
</connectionString>
<commandText>
insert into LogTable(DateTime,Logger,LogLevel,Message,ProcessId,ManagedThreadId) values (@DateTime,@Logger,@LogLevel,@Message,@ProcessId,@ManagedThreadId);
</commandText>
<parameter name="@DateTime" layout="${date:format=yyyy\-MM\-dd HH\:mm\:ss.fff}"/>
<parameter name="@Logger" layout="${logger}"/>
<parameter name="@LogLevel" layout="${level}"/>
<parameter name="@Message" layout="${message}"/>
</target>
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="sqlexpress" />
</rules>
</nlog>
除了(或代替)记录到数据库之外,您当然可以记录到文件。
我不熟悉从 SharePoint 执行此操作,因此我无法评论您可能遇到的任何配置或权限问题。
这是我找到的一个链接,其中讨论了如何让 NLog 在 SharePoint 环境中工作:
http://nlog-forum.1685105.n2.nabble.com/Is-anyone-using-NLog-with-SharePoint-td2171451.html
该链接似乎将您置于 NLog 论坛的顶部,而不是特定的帖子。在“有人在 SharePoint 中使用 NLog”论坛中搜索此文本,您应该会找到正确的帖子。
祝你好运!