我的问题是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")