Я работаю над проектом библиотеки классов C #, который использует NLog.NLog входит в базу данных.Я настроил тестовый проект консольного приложения для вызова библиотеки (консольное приложение не имеет регистрации).У меня есть столбец в таблице журнала для хранения имени пользователя вошедшего в систему пользователя, запустившего приложение.
В соответствии с документацией NLog, это значение сохраняется либо в ${identity}
, либо в ${windows-identity}
.Я пытался использовать оба, но когда журнал записывает в базу данных, значение столбца UserName
равно notauth::
.Как я могу это исправить?Мой nlog.config
файл находится ниже.
<?xml version="1.0"
encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off"
internalLogFile="c:\temp\nlog-internal.log"
throwConfigExceptions="true">
<targets>
<target name="db"
xsi:type="Database"
connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;">
<commandText>
INSERT INTO Logs.TableName
(
[Level]
, UserName
, CallSite
, [Message]
, Exception
, StackTrace
, Logged
)
VALUES
(
@level
, @userName
, @callSite
, @message
, @exception
, @stackTrace
, @logged
)
</commandText>
<parameter name="@level" layout="${level}" />
<parameter name="@userName" layout="${identity}" />
<parameter name="@callSite" layout="${callsite}" />
<parameter name="@message" layout="${message}" />
<parameter name="@exception" layout="${exception:tostring}" />
<parameter name="@stackTrace" layout="${stacktrace}" />
<parameter name="@logged" layout="${date}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="db" />
</rules>
</nlog>