在自定义目标中重用 NLogs FileTargets FilePathLayout 功能

Reuse NLogs FileTargets FilePathLayout functionality in a custom target

我想为 NLog(针对 LiteDB)创建自定义 FileTarget。我不能使用现有的,因为它缺少我需要的一些功能,而且据我所知,它与最新版本的 LiteDB 不兼容。在我的自定义目标中,我想使用 TempDir Layout Renderer。由于 NLog 已经有了 FilePathLayout class,我想我可以重用它但遗憾的是它被声明为内部的。 我错过了什么吗?还有其他使用方法吗?

我的设置:

如果您正在编写自定义 NLog 目标,那么您可以这样做:

[Target("MyFirst")] 
public sealed class MyFirstTarget: TargetWithLayout 
{ 
    public MyFirstTarget()
    {
        this.Directory = "${tempdir}";
    }
 
    public Layout Directory { get; set; }
 
    protected override void Write(LogEventInfo logEvent) 
    { 
        string logMessage = RenderLogEvent(this.Layout, logEvent);
        string directory = RenderLogEvent(this.Directory, logEvent);
 
        WriteToDirectory(directory, logMessage); 
    } 
 
    private void WriteToDirectory(string directory, string message) 
    { 
        // TODO - write me 
    } 
}

另请参阅:https://github.com/NLog/NLog/wiki/How-to-write-a-custom-target