NLog程序化配置存档不适用于Mono

时间:2016-04-04 15:07:36

标签: logging f# mono nlog

我的问题是NLog with Mono在使用编程配置时似乎会破坏日志存档。我不确定这是我的配置代码或Mono或其他问题。非归档日志记录有效,因此可能不是权限问题。这适用于使用Visual Studio的Windows,因此它可能不是NLog或配置设置的问题。

我正在设置一个库,要求以编程方式配置NLog记录器。必须使用滚动日志文件设置此记录器。我将这个小型测试程序放在C#中,并在Windows中进行了测试,滚动日志文件可以正常工作。

当我在使用mono的Linux或OSX上运行时,滚动日志文件不起作用。记录器工作并写入日志文件,直到达到文件大小限制。此时,日志记录只是完全停止,而不是创建存档日志文件。

let private createFileTarget filename =
    let target = new Targets.FileTarget()
    let logFile = filename + ".log"
    printfn "Logging to %s" logFile
    target.FileName <- new SimpleLayout(logFile)
    target.Layout <- new SimpleLayout("${message}")
    target.ArchiveFileName <- new SimpleLayout(filename + ".{#}.log")
    target.MaxArchiveFiles <- 3
    target.ArchiveNumbering <- ArchiveNumberingMode.Rolling
    target.ConcurrentWrites <- true
    target.KeepFileOpen <- true
    target.ArchiveAboveSize <- 1024L * 1024L
    target

let private configure () =
    let config = new LoggingConfiguration()
    let target = createFileTarget "test"
    config.AddTarget("logfile", target)

    let rule = new LoggingRule("*", LogLevel.Info, target)
    config.LoggingRules.Add(rule)

    let factory = new LogFactory()
    factory.Configuration <- config
    factory.GetLogger("testLogger")

0 个答案:

没有答案