gpt4 book ai didi

c# - NLog 在 Windows .Net Core 应用程序上运行良好,但在 Linux 上运行不佳

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:26 25 4
gpt4 key购买 nike

我的 .Net Core 控制台应用程序中有这个 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"
autoReload="true"
internalLogLevel="Error"
internalLogFile="c:\temp\IBTest\internal-nlog.txt">
<targets>
<target xsi:type="File" name="allfile" fileName="c:\temp\IBTest\nlog-all-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<target xsi:type="File" name="ownFile-web" fileName="c:\temp\IBTest\nlog-own-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}| ${message} ${exception}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
<target xsi:type="Null" name="blackhole" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="allfile" />
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules>
</nlog>

当我在 Windows 上启动我的应用程序时,它工作正常并创建了所有应该创建的日志文件。但是,当我在 Linux 上部署我的应用程序时,它不起作用。

这是我的 nlog.config 文件在 Linux 上的样子:

<?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="/home/ib_tests_internal-nlog.log">
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="/home/ib_tests-all-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" />

<!-- another file log, only own logs. Uses some ASP.NET core renderers -->
<target xsi:type="File" name="ownFile-web" fileName="/home/ib_tests_nlog-own-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}| ${message} ${exception}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />

<!-- write to the void aka just remove -->
<target xsi:type="Null" name="blackhole" />
</targets>

<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />

<!--Skip Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules>
</nlog>

我真的不明白哪里出了问题。我检查了路径数百万次,所有文件(至少是我认为的文件)都拥有读/写的所有权限。我已经在 Windows 中尝试了 dotnet publishdotnet app.dll 并且成功了。当我在 Linux 上以相同的方式启动应用程序时,它没有。我真的没主意了。似乎我一直在做的就是从我的样本中复制粘贴。有谁知道可能出什么问题了吗?或者还要检查什么?或以某种手动方式创建该日志文件并查看它是否运行?真的坐了半天到我以为我会被解雇的地步

最佳答案

我的猜测是您的 NLog.config 的文件名大小写不正确。除非您已将代码配置为使用默认值以外的其他内容,否则 nlog.config 将不起作用,并且它必须是 NLog.config(注意大写 N 和 L ).

关于c# - NLog 在 Windows .Net Core 应用程序上运行良好,但在 Linux 上运行不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51545912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com