几行代码在.NET AI中添加日志输出

几行代码在.NET AI中添加日志输出

从上一篇文章可以看出使用Microsoft.Extensions.AI来跟大模型对话是多么简单,微软为我们封装了很多东西,我们作为调包侠,无脑调用即可。

本着只要你想吃苦,就有吃不完的苦,只要你想摆烂,就有停不下的爽的原则,给聊天增加日志,比聊天本身更简单。

首先,回顾上一节中的代码,有个OpenAIClientOptions,对就是这个Option,它可以直接设置一个ClientLoggingOptions,对,就这么简单。

1
2
3
4
//可以给这个OpenAIClientOptions设置日志相关的东西
OpenAIClientOptions clientOptions = new OpenAIClientOptions();
clientOptions.Endpoint = new Uri("https:....");
OpenAIClient aiClient = new OpenAIClient(new System.ClientModel.ApiKeyCredential("...."),clientOptions);

完整演示

一切简化,我们用简单的NLog

  1. 你要用Nlog,那一定要先配置下Nlog啦,自己安装相关的Nuget包NLog.Extensions.Logging
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//创建NLog配置
var config = new LoggingConfiguration();
//配置一个控制台Target
ColoredConsoleTarget target = new ColoredConsoleTarget("console")
{
Layout = "${longdate} | ${level:uppercase=true:padding=-5} | ${logger} | ${message} ${exception:format=tostring}"
};
//或者配置一个文件Target
FileTarget fileTarget = new FileTarget()
{
FileName = @"C:\Users\aaa\Desktop\aaaaa.log",
AutoFlush = true,
DeleteOldFileOnStartup = true
};

//创建控制台目标
config.AddRule(NLog.LogLevel.Trace, NLog.LogLevel.Error, fileTarget);
LogManager.Configuration = config;
  1. 让 .NET 的日志系统使用 NLog 作为日志输出后端

ILoggerFactory logFactory = LoggerFactory.Create(builder => builder.AddNLog());

  1. 新建一个ClientLoggingOptions,然后配置一下
1
2
3
4
5
6
//新建一个ClientLoggingOptions,用于设置大模型的响应
ClientLoggingOptions clientLogOpt = new ClientLoggingOptions();
clientLogOpt.LoggerFactory = logFactory; //把上一步的factory进行绑定
clientLogOpt.EnableLogging = true; //打开日志输入开关
clientLogOpt.EnableMessageLogging = true; //记录请求头
clientLogOpt.EnableMessageContentLogging = true; //记录响应内容
  1. 完事
1
2
OpenAIClientOptions clientOptions = new OpenAIClientOptions();
clientOptions.ClientLoggingOptions = clientLogOpt; //直接把上一步创建的内容赋值
作者

步步为营

发布于

2025-11-14

更新于

2025-11-14

许可协议