- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑一个向导生成的 ASP.NET Core 项目 (NET 6)。将 Google.Cloud.Diagnostics.AspNetCore3
NuGet 包和 services.AddGoogleDiagnosticsForAspNetCore()
添加到 Startup.cs
。让 GOOGLE_APPLICATION_CREDENTIALS
环境变量指向您的服务帐户 JSON 的路径。
在应用程序的某处(例如 Controller )添加以下内容:
_logger.LogDebug("Nope");
_logger.LogInformation("Yeah");
Google Cloud Logs Explorer 仅显示"is"(没有特定过滤器)。我的 appsettings.json
看起来像:
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
据我了解,"Default": "Debug"
应该适用于缺少更具体配置的任何地方。
为什么我没有看到“Nope”被记录?有什么明显的我失踪了吗?值得一提的是,Visual Studio 调试输出和控制台输出都按预期显示 Nope/Yeah。
最佳答案
简短回答:Google.Cloud.Diagnostics.AspNetCore3
不使用 appsettings.json
(至少目前如此),必须明确设置日志级别。
接下来是冗长的答案和工作代码。
要将 Google 诊断添加到我们的项目中,我们有 3 个重载的 ...AddGoogleDiagnosticsForAspNetCore(...)
可用,还有 ...AddGoogle(...)
只是为了使用我们需要的服务,比如日志服务。 (开头的...
因dotnet版本而异,末尾为示例)。
1- 在 GCP 环境中,...AddGoogleDiagnosticsForAspNetCore()
签名用于设置诊断的默认值。服务详情从 GCP 获取。
2- 在 GCP 环境中,...AddGoogleDiagnosticsForAspNetCore(AspNetCoreTraceOptions, LoggingServiceOptions, ErrorReportingServiceOptions)
签名我们可以设置 3 种类型的选项:AspNet Tracing、Logging Service 和 Error Reporting Service。
(null,new LoggingServiceOptions{...},null)
(不需要最后一个 null)或命名参数 (loggingOptions: new LoggingServiceOptions{...})
LoggingServicesOptions{...}
中有很多设置,但仅出于日志级别目的,以下内容就足够了:new LoggingServiceOptions{ Options = LoggingOptions.Create(logLevel: LogLevel.调试)}
。现在我们来到了重要的地方。尽管文档隐含地涵盖了足够多的内容,但并未明确说明此用例将直接设置选项,而不是服务。
3- 虽然没有明确说明,但此用途适用于 GCP 之外的情况或无法正确设置 GCP(不确定如何设置!?) AddGoogleDiagnosticsForAspNetCore( projectId, serviceName, serviceVersion, TraceOptions, LoggingOptions, ErrorReportingOptions )
。乍一看,这可能类似于第二个签名,但它没有设置服务选项。
Project ID was not provided and could not be autodetected
消息时,他们必须将其作为参数提供,该参数会立即切换功能以使用此第三个签名。(projectId,null,null,null,LoggingOptions...,null)
的形式用于位置参数(最后一个 null 不是必需的)或 (projectId:"some ID",loggingOptions: LoggingOptions...)
用于命名参数LoggingOptions...
就是LoggingOptions.Create(logLevel: LogLevel.Debug)
设置日志级别。4- 除了在将 Google 诊断添加到服务时添加这些详细信息外,我们还可以在设置配置时添加日志记录选项:...AddGoogle(LoggingServiceOptions{...})
。但是在这个使用中,我们需要在里面提供一个项目Id; new LoggingServiceOptions{ ProjectId = "some ID", Options = LoggingOptions.Create(logLevel: LogLevel.Debug) }
...
dotnet 6 开始使用新的顶级语句。所以我们有以下步骤要遵循。
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddGoogleDiagnosticsForAspNetCore(
projectId: "some ID",
loggingOptions: LoggingOptions.Create(logLevel: LogLevel.Debug)
);
// or
var builder = WebApplication.CreateBuilder(args);
builder.Logging.AddGoogle(
new LoggingServiceOptions {
ProjectId = "some ID",
Options=LoggingOptions.Create(logLevel:LogLevel.Debug)
}
);
由于 OP 提到了 Startup.cs
的使用,该项目使用旧样式,因此这些是所需的部分。
// inside ConfigureServices
services.AddGoogleDiagnosticsForAspNetCore(
projectId: "some ID",
loggingOptions: LoggingOptions.Create(logLevel: LogLevel.Debug)
);
// or
// before using "UseStartup"
.ConfigureLogging(
builder => builder.AddGoogle(
new LoggingServiceOptions {
ProjectId = "some ID",
Options=LoggingOptions.Create(logLevel:LogLevel.Debug)
}
)
)
我们可以从配置文件中读取(顶级格式)
var builder = WebApplication.CreateBuilder(args);
var config = builder.Configuration;
builder.Services.AddGoogleDiagnosticsForAspNetCore(
projectId:config["GCP:ID"],
loggingOptions: LoggingOptions.Create(
logLevel: Enum.Parse<LogLevel>(config["GCP:Logging:LogLevel:Default"]
)));
并在 appsettings.json
"GCP":{
"ID":"some ID",
"Logging":{
"LogLevel":{
"Default":"Debug"
}
}
}
关于asp.net-core - Google.Cloud.Diagnostics.AspNetCore3 调试级别不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70729234/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!