From 5eb43fde5cd04202d4049114d7a5b814586ea03f Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Fri, 28 Nov 2025 15:47:24 +0100 Subject: [PATCH] Fixes creating .csv file in OpenAIUsageDebuggingPlugin. Closes #1460 --- .../Inspection/OpenAIUsageDebuggingPlugin.cs | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/DevProxy.Plugins/Inspection/OpenAIUsageDebuggingPlugin.cs b/DevProxy.Plugins/Inspection/OpenAIUsageDebuggingPlugin.cs index d3a3f83f..84d8e0cb 100644 --- a/DevProxy.Plugins/Inspection/OpenAIUsageDebuggingPlugin.cs +++ b/DevProxy.Plugins/Inspection/OpenAIUsageDebuggingPlugin.cs @@ -49,20 +49,6 @@ public sealed class OpenAIUsageDebuggingPlugin( private readonly string outputFileName = $"devproxy_llmusage_{DateTime.Now:yyyyMMddHHmmss}.csv"; - public override async Task InitializeAsync(InitArgs e, CancellationToken cancellationToken) - { - Logger.LogTrace("{Method} called", nameof(InitializeAsync)); - - ArgumentNullException.ThrowIfNull(e); - - if (!File.Exists(outputFileName)) - { - await File.AppendAllLinesAsync(outputFileName, [UsageRecord.GetHeader()], cancellationToken); - } - - Logger.LogTrace("{Method} finished", nameof(InitializeAsync)); - } - public override async Task AfterResponseAsync(ProxyResponseArgs e, CancellationToken cancellationToken) { Logger.LogTrace("{Method} called", nameof(AfterResponseAsync)); @@ -121,6 +107,12 @@ public override async Task AfterResponseAsync(ProxyResponseArgs e, CancellationT break; } + if (!File.Exists(outputFileName)) + { + Logger.LogDebug("Creating output file {FileName} with header", outputFileName); + await File.AppendAllLinesAsync(outputFileName, [UsageRecord.GetHeader()], cancellationToken); + } + await File.AppendAllLinesAsync(outputFileName, [usage.ToString()], cancellationToken); Logger.LogRequest("Processed OpenAI request", MessageType.Processed, new(e.Session));