c# - ASP.NET MVC 使用 NLog 记录多个项目
问题描述
是否可以为多个项目安装 nlog 和日志?目前我已经用这个配置文件将它安装在我的类库中:
<?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">
<!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue"/>
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets>
<target xsi:type="Database"
name="database"
connectionStringName="DefaultConnection"
commandText="INSERT INTO [dbo].[AspNetEventLogs] ([Application], [Logged], [Level],[Message],[UserName],[ServerName],[Port],[Url],[Https],[ServerAddress],[Logger],[Callsite], [Exception]) VALUES (@Application, @Logged, @Level, @Message, @UserName, @ServerName, @Port, @Url, @Https, @ServerAddress, @Logger, @CallSite, @Exception);
">
<parameter name="@application" layout="${appsetting:name=appName}" />
<parameter name="@logged" layout="${date}" />
<parameter name="@level" layout="${level}" />
<parameter name="@message" layout="${message}" />
<parameter name="@username" layout="${identity}" />
<parameter name="@serverName" layout="${aspnet-request:serverVariable=SERVER_NAME}" />
<parameter name="@port" layout="${aspnet-request:serverVariable=SERVER_PORT}" />
<parameter name="@url" layout="${aspnet-request:serverVariable=HTTP_URL}" />
<parameter name="@https" layout="${when:inner=1:when='${aspnet-request:serverVariable=HTTPS}' == 'on'}${when:inner=0:when='${aspnet-request:serverVariable=HTTPS}' != 'on'}" />
<parameter name="@serverAddress" layout="${aspnet-request:serverVariable=LOCAL_ADDR}" />
<parameter name="@logger" layout="${logger}" />
<parameter name="@callSite" layout="${callsite}" />
<parameter name="@exception" layout="${exception:tostring}" />
</target>
</targets>
<rules>
<!-- add your logging rules here -->
<logger name="*" minlevel="Trace" writeTo="database" />
<!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
-->
</rules>
</nlog>
但是,目前其中一些列未正确填充。服务器名称为空,应用程序名称为空。我希望将它用于同一解决方案中的多个项目。
解决方案
如果 nlog.config 部署在正确的文件夹中并且其他项目可以访问“httpcontext”(例如其他 ASP.NET 项目),Tt 应该可以工作
关于您的空值,请检查您的内部日志:https ://github.com/nlog/NLog/wiki/Internal-logging
请注意,您需要NLog.Web或NLog.Web.AspNetCore${aspnet-request}
推荐阅读
- javascript - 在 SailsJS 中将图像 URL 保存到用户
- ruby-on-rails - 有没有办法生成测试文件夹?
- opengl - 光线盒相交计算错误距离
- haskell - 尝试在堆栈上安装 System.Random
- image - 是否可以为各种设备提供不同质量的 Progressive-JPEG 图像?
- android - 当我将活动属性“android:windowIsFloating”设置为 true 时,Android ConstraintLayout 宽度不正确
- node.js - 用于 API 测试的 Codeceptjs - Node.js
- python - 去重数据框会导致拆分数据框出现问题
- python - 使用 LSTM python 预测新值
- visual-studio - 在 Visual Studio 2017 的分析器从 VSPX 文件导出的 XML 文件中查找 CPU 使用率?