如何在Linux上使用NLog在var/log/my-app-dir中添加日志文件和文件夹



我正试图通过NLog将日志记录添加到.NET核心中的WebAPI中,但似乎无法让Linux允许我将日志文件写入var/log/my-app。除了SysLog的扩展之外,我找不到任何文档,但这不符合我的需求。目标是定义一个以应用程序命名的文件夹,并将内部、所有和自己的文件存储在那里,如下所示:

var
|-- log
|-- my-app
|-- internal.txt
|-- nlog-all.log
|-- nlog-own.log

我可能缺少文档或其他什么,但我还没有找到如何指定,而不仅仅是通过SysLog写入系统日志。在像Ubuntu这样的Linux环境中,应该如何使用NLog来实现这一点?

NLog InternalLogger主要用于诊断和故障排除,因此为了简化和减少出错几率,日志记录路径的动态控制逻辑相当有限。

您现在可以使用以下关键字:

  • ${basedir}
  • ${processdir}
  • ${currentdir}
  • ${tempdir}
  • %appdata%

另请参阅:https://github.com/NLog/NLog/wiki/Internal-Logging

在您的情况下,我可能会考虑在部署NLog.config时执行令牌搜索替换(在部署时搜索XML转换(。

备选方案只是在启动时分配应用程序名称,如下所示:

var logDir = "var/log/my-app";
NLog.GlobalDiagnosticsContext.Set("LogDir", logDir);
NLog.Common.InternalLogger.LogFile = System.IO.Path.Combine(logDir, "internal.txt");

使用此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"
throwConfigExceptions="true"
internalLogLevel="info">
<targets>
<target xsi:type="File" name="allfile" fileName="${gdc:LogDir}/nlog-all.log"  />
<target xsi:type="File" name="ownfile" fileName="${gdc:LogDir}/nlog-own.log" />
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--Skip non-critical Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" maxlevel="Info" final="true" />  <!-- BlackHole -->
<logger name="*" minlevel="Trace" writeTo="ownfile" />
</rules>
</nlog>

相关内容

  • 没有找到相关文章

最新更新