扩展NLog以写入网络驱动器并不做任何事情

时间:2017-07-12 20:44:17

标签: f# nlog

我试图将我的日志存储到网络中的驱动器中。我写了一个nlog扩展模块:

module NLogExtension

open System.Text
open NLog
open NLog.LayoutRenderers
open NLog.Config
open System.IO

[<LayoutRenderer("FindAvailableDrive")>]
type FindAvailableDriveLayoutRenderer() = 
    inherit LayoutRenderer()
    let mutable validDrive = ""


    [<DefaultParameter>]
    member val DriveCandidates = "" with get, set
    member private x.findValidDrive(): string = 
        if x.DriveCandidates = null || x.DriveCandidates = ""
        then 
            if Directory.Exists("V:")
            then validDrive <- "V:"
            else validDrive <- "S:"
        else validDrive <- "S:"
        validDrive
    override x.Append(builder: StringBuilder, logEvent: LogEventInfo) = builder.Append(x.findValidDrive(): string) |> ignore

这将存储在V:或S:如果V不存在。

这是App.config文件中的nlog部分:

<nlog 
    xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <extensions>
      <add assembly="Solk.NLogExtension" />
    </extensions>
    <targets>
      <target name="logfile" xsi:type="File" fileName="logfile.txt" />
      <target name="indexCheckLog" 
              xsi:type="File"
              fileName="${FindAvailableDrive}/logs/indexChecklog.txt"
              layout="${callsite} - ${message}"
              archiveFileName="${FindAvailableDrive}/logs/archives/log.info.${shortdate}.txt"
              archiveEvery="Day"
              archiveNumbering = "Rolling"
              maxArchiveFiles="7"
              concurrentWrites="false"
      />
      <target name="console" xsi:type="Console" />
    </targets>
    <rules>
      <logger name="indexCheckLogger" minlevel="Trace" writeTo="indexCheckLog" final="true"/>
      <logger name="*" minlevel="Trace" writeTo="logfile" />
      <logger name="*" minlevel="Info" writeTo="console" />
    </rules>
  </nlog>

我关注的目标是indexCheckLog。如您所见,当前日志和存档都使用扩展名${FindAvailableDrive}。您可以看到我使用程序集Solk.NLogExtension在文件顶部添加了扩展标记(Solk是程序集标题和项目名称,NLogExtension是模块的名称,可以在扩展模块的第一行中看到)

但是,这些文件夹中没有单个日志。不在V或S中。不确定我做错了什么,没有抛出任何异常或任何正在发生的事情的迹象。

0 个答案:

没有答案