为.NET Framework 4.6控制台应用集成OpenTelemetry
.NET Framework 4.6 控制台应用集成OpenTelemetry日志示例
确实,.NET Framework相关的OpenTelemetry示例确实比.NET Core的少很多,但完全能搞定!我给你整了一个亲测可用的控制台应用示例,专门适配.NET Framework 4.6:
第一步:安装兼容的NuGet包
.NET Framework 4.6对NuGet包版本有要求,得选兼容的OpenTelemetry系列包。你可以通过Package Manager Console执行以下命令安装:
Install-Package OpenTelemetry -Version 1.6.0 Install-Package OpenTelemetry.Exporter.Console -Version 1.6.0 Install-Package OpenTelemetry.Extensions.Logging -Version 1.6.0 Install-Package Microsoft.Extensions.Logging -Version 2.1.1
或者直接在NuGet包管理器中搜索这些包,手动选择对应版本安装。
第二步:完整的控制台代码示例
下面是Program.cs的完整代码,每一步都做了简单注释:
using Microsoft.Extensions.Logging; using OpenTelemetry; using OpenTelemetry.Logs; using System; namespace OTelNetFrameworkDemo { class Program { static void Main(string[] args) { // 初始化日志工厂,绑定OpenTelemetry using var loggerFactory = LoggerFactory.Create(builder => { builder.AddOpenTelemetry(loggingOptions => { // 添加控制台导出器,方便实时查看日志效果 loggingOptions.AddConsoleExporter(); // 设置日志捕获的最低级别(按需调整) loggingOptions.SetMinimumLevel(LogLevel.Information); // 配置服务元数据,方便后端识别来源 loggingOptions.SetResourceBuilder( ResourceBuilder.CreateDefault() .AddService(serviceName: "NetFramework-Console-App", serviceVersion: "1.0.0")); }); }); // 创建日志实例 var logger = loggerFactory.CreateLogger<Program>(); // 测试不同级别的日志输出 logger.LogInformation("这是一条来自.NET Framework 4.6的OpenTelemetry信息日志"); logger.LogWarning("系统检测到潜在风险,这是一条警告日志"); logger.LogError(new InvalidOperationException("模拟异常"), "这是一条附带异常信息的错误日志"); Console.WriteLine("日志已发送至OpenTelemetry控制台导出器,按回车退出..."); Console.ReadLine(); } } }
额外注意事项
- 版本兼容性:OpenTelemetry 1.6.x系列是适配.NET Framework 4.6的最低稳定版本,更高版本可能要求.NET Framework 4.6.1及以上,注意不要随意升级。
- 扩展到其他后端:如果需要把日志发送到Jaeger、OTLP后端等,只需安装对应导出器包(比如
OpenTelemetry.Exporter.Jaeger),然后替换AddConsoleExporter()为对应的AddJaegerExporter()并配置相关参数即可。 - 集成现有日志框架:如果你已经在用log4net、NLog等日志库,可以安装对应的OpenTelemetry适配包(比如
OpenTelemetry.Instrumentation.Log4Net),把现有日志链路接入OpenTelemetry。
内容的提问来源于stack exchange,提问作者George Mavritsakis
相关产品推荐
相关产品推荐

