使用 Nlog 记录 Asp.Net Web API 的上下文信息
Use Nlog to log context info of Asp.Net Web API
我有两个单独的 table 用于记录用户 activity 和 asp.net 网络 Api 中的错误。
这是我的 Activity 日志 table:
要在table中存储Log信息,这里是Nlog.config设置。
<target name="database" xsi:type="Database" keepConnection="true" useTransactions="true"
dbProvider="System.Data.SqlClient" commandType="Text"
connectionString="data source=XXXXX;initial catalog=XXXXX;integrated security=false;persist security info=True;User ID=XXXXX;Password=XXXXX"
commandText="INSERT INTO [dbo].[ActivityLog]([PageName],[MethodName],[IPAddress],[RequestedUrl],[IsAuthenticated],[UserName],[Date]) VALUES(@PageName,@MethodName,@IPAddress,@RequestedUrl,@IsAuthenticated,@UserName,@Date)">
<parameter name="@PageName" layout="" />
<parameter name="@MethodName" layout="" />
<parameter name="@IPAddress" layout=""/>
<parameter name="@RequestedUrl" layout="${aspnet-request:serverVariable=HTTP_URL}"/>
<parameter name="@IsAuthenticated" layout="${aspnet-user-identity}:isAuthenticated"/>
<parameter name="@UserName" layout="${aspnet-user-identity}"/>
<parameter name="@Date" layout="${date:s}"/>
</target>
对于页面名称参数,我需要 Web API 控制器名称,对于方法名称参数,我需要调用控制器的操作方法。
我还需要知道用户是否经过身份验证。
现在请告诉我 Nlog 配置文件中定义的设置是否正确以及如何将值传递给其他参数。
可以找到所有可能的布局渲染器here。
您可以使用以下渲染器:
- Web API 控制器名称:
${aspnet-MVC-Controller}
- 方法名称:您可以使用
${callsite}
或 ${aspnet-mvc-action}
- 已验证:
${identity:isAuthenticated}
PS:
- 数据库目标的所有参数都是字符串参数
我有两个单独的 table 用于记录用户 activity 和 asp.net 网络 Api 中的错误。
这是我的 Activity 日志 table:
要在table中存储Log信息,这里是Nlog.config设置。
<target name="database" xsi:type="Database" keepConnection="true" useTransactions="true"
dbProvider="System.Data.SqlClient" commandType="Text"
connectionString="data source=XXXXX;initial catalog=XXXXX;integrated security=false;persist security info=True;User ID=XXXXX;Password=XXXXX"
commandText="INSERT INTO [dbo].[ActivityLog]([PageName],[MethodName],[IPAddress],[RequestedUrl],[IsAuthenticated],[UserName],[Date]) VALUES(@PageName,@MethodName,@IPAddress,@RequestedUrl,@IsAuthenticated,@UserName,@Date)">
<parameter name="@PageName" layout="" />
<parameter name="@MethodName" layout="" />
<parameter name="@IPAddress" layout=""/>
<parameter name="@RequestedUrl" layout="${aspnet-request:serverVariable=HTTP_URL}"/>
<parameter name="@IsAuthenticated" layout="${aspnet-user-identity}:isAuthenticated"/>
<parameter name="@UserName" layout="${aspnet-user-identity}"/>
<parameter name="@Date" layout="${date:s}"/>
</target>
对于页面名称参数,我需要 Web API 控制器名称,对于方法名称参数,我需要调用控制器的操作方法。 我还需要知道用户是否经过身份验证。
现在请告诉我 Nlog 配置文件中定义的设置是否正确以及如何将值传递给其他参数。
可以找到所有可能的布局渲染器here。 您可以使用以下渲染器:
- Web API 控制器名称:
${aspnet-MVC-Controller}
- 方法名称:您可以使用
${callsite}
或${aspnet-mvc-action}
- 已验证:
${identity:isAuthenticated}
PS:
- 数据库目标的所有参数都是字符串参数