c# - 生产服务器上的 nlog 失败
问题描述
我已经使用 Nlog 设置了我的 asp.Net Core 5 应用程序,用于在 LIVE 环境中记录错误。直到最近我才意识到托管公司重新配置了服务器上文件夹的权限,拒绝了某些文件夹的写入权限,它一直运行顺利。我开始注意到我不再能够将文件上传到应用程序中 www 文件夹下的某些文件夹。
当我引起他们的注意时,他们启用了对该文件夹的写访问权限,从那时起,我可以上传文件,但我也注意到大约在同一时间,我的错误记录停止工作。在本地,我的错误日志仍然有效,但不再在生产服务器上工作。
现在我想知道错误记录是否会受到写权限审查的影响,以及我如何能够进一步解决问题,并可能向技术支持团队提出一些合理的建议,以帮助更快地解决问题。
我的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"
autoReload="true"
internalLogLevel="Info"
internalLogFile="c:\temp\internal-nlog.txt">
<!-- enable asp.net core layout renderers -->
<extensions>
<add assembly="NLog.Web.AspNetCore" />
<add assembly="NLog.MailKit" />
</extensions>
<!-- the targets to write to -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="alllogs" fileName="./logs/all-logs/${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
<!-- another file log, only own logs. Uses some ASP.NET core renderers -->
<target xsi:type="File" name="errorlogs" fileName="./logs/error-logs/${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
<!-- Database Logging target -->
<target name="db" xsi:type="Database"
dbHost="hosteserver"
dbDatabase="databasename"
dbUserName="username"
dbPassword="password">
<commandText>
insert into dbo.ErrorLogs (
Logtime, Level, Message, Exception,
Logger
) values (
@TimeLogged, @Level, @Message, @Exception,
@Logger
);
</commandText>
<parameter name="@TimeLogged" layout="${longdate}" />
<parameter name="@Level" layout="${level}" />
<parameter name="@Message" layout="${message}" />
<parameter name="@Exception" layout="${exception:tostring}" />
<parameter name="@Logger" layout="${logger}" />
</target>
<!-- my mailkit target for email notifications on error -->
<target xsi:type="Mail"
name="ErrorMailLogTarget"
subject="Error Occurred on The Application Name"
to="myname@myemail.com"
from="email@mydomain.com"
body="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}"
smtpUserName="email@mydomain.com"
smtpServer="mydomain.com"
smtpPort="587"
timeout="20000"
smtpPassword="email_password"
smtpAuthentication="basic"
skipCertificateValidation="true"
priority="Urgent"
/>
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="alllogs" />
<!--Skip non-critical Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<!-- BlackHole without writeTo -->
<logger name="*" minlevel="Error" writeTo="errorlogs" />
<!-- Error Mail notification log -->
<logger name="*" minlevel="Error" writeTo="ErrorMailLogTarget" />
<!-- Database Logging Provision -->
<logger name="*" minlevel="Error" writeTo="db" />
</rules>
</nlog>
我将不胜感激任何解决此问题的指南。
谢谢
解决方案
推荐阅读
- git - 完成 git reset 后如何继续
(卡住) - javascript - 根据另一个下拉列表动态更新下拉列表?
- javascript - 如何将 Vue.js 集成添加到已初始化的 Sentry.io 设置中?
- reactjs - Google Recaptcha 问题
- linux - 需要建议在 linux 中移动一个大的实时文件
- c# - 使用 C# 将 Excel 转换为 CSV,在每一行上获得额外的
- python - 在下面的代码中立即执行方法后的 Tkinter
- transparent - mikrotik 上的 mitmproxy 透明代理不起作用
- javascript - vue.js 中用于电话号码的正则表达式
- android - 无法从 android 应用程序的 webview 检查元素