NLog - 如何放入特定的日志目录

时间:2013-12-27 20:58:53

标签: vb.net nlog

我正在使用NLog,并希望使用非标准目录进行日志记录。我的应用程序在加载期间将加载一个“LogFileLocation”参数,该参数存储日志文件目录的位置。

是否可以使用非标准的日志文件目录?并且,如果是这样,如果我设置了autoReload =“true”,我还可以在运行时更新它吗?

1 个答案:

答案 0 :(得分:0)

首先,我会按惯例将应用程序的任何部分的日志文件保留在默认位置,因为这是其他开发人员所期望的。

我在WinForms ApplicationEvents中使用vb.net“设置”做了类似的操作,从具有混合结果的用户特定值中提取值(应用程序升级导致问题)。在一天结束的时候逻辑不能很好地转化为C#,如果那是你的鱼。

我假设您已通过app.config Nlog config settings,如下所示。我假设您可以在父app.config级别对该值进行硬编码,以使其适用于您的应用程序的管理和服务组件。

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="logDirectory"
          value="${basedir}/logs/${date:format=yyyyMMdd}/"/>
<targets async="true">
  <target name="AppFullLog"
          layout="${longdate}    ${level:uppercase=true}     ${logger} on ${machinename} by ${windows-identity}.${newline}${message}${newline}Stack:${stacktrace}${newline}-------"
          xsi:type="File"
          fileName="${logDirectory}CadiFull.log">
  </target>
  <target name="AppErrorLog"
          layout="${longdate}    ${level:uppercase=true}     ${logger} on ${machinename} by ${windows-identity}.${newline}${message}${newline}Stack:${stacktrace}${newline}-------"
          xsi:type="File"
          fileName="${logDirectory}CadiErrors.log">
  </target>
</targets>
<rules>
  <logger name="*"
          writeTo="AppFullLog" />
  <logger name="*"
          levels="Error,Fatal"
          writeTo="AppErrorLog" />
</rules>

最后,如果您尝试将所有错误日志放入一个位置,则始终可以将数据发送到服务器数据库。 Nlog提供了实现这一目标的选项。