使用 ASP.NET 或调用 API

您可以通过三种方式使用 Stackdriver Logging 客户端库:

选项 1:使用 ASP.NET Core 集成

Google.Cloud.Diagnostics.AspNetCore 是一个将您的标准 ASP.NET 日志发送到 Stackdriver Logging 的库。

要使用 Google.Cloud.Diagnostics.AspNetCore 记录日志,请使用以下命令之一安装此库:

软件包管理器

PM> Install-Package Google.Cloud.Diagnostics.AspNetCore -Version 2.0.1

.NET CLI

> dotnet add package Google.Cloud.Diagnostics.AspNetCore --version 2.0.1

然后,进行以下更改以修改 Startup.cs 文件:

  1. 将以下 using 语句添加到 Startup.cs 的顶部:

    using Google.Cloud.Diagnostics.AspNetCore;
    using Microsoft.Extensions.Logging;
    
  2. 修改 Configure 函数。添加 ILoggerFactory loggerFactory,并添加对 loggerFactory.AddGoogle("YOUR-PROJECT-ID") 的调用:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env,
        ILoggerFactory loggerFactory)
    {
        // Log to Google.
        loggerFactory.AddGoogle("YOUR-PROJECT-ID");
    
  3. 在 Visual Studio 中编译和运行代码。请参阅 Stackdriver Logging 日志查看器的全局资源下的日志条目。

    转到“日志查看器”

选项 2:使用 Log4Net 集成

Log4Net 是一个 Apache 库,支持您将日志语句输出到各种输出目标。

要使用 Log4Net 集成开始记录日志,请通过以下命令安装 Google.Cloud.Logging.Log4Net 库:

    PM> Install-Package Google.Cloud.Logging.Log4Net -Version 2.2.1

之后,执行以下操作:

  1. 在网页应用的 Web.config 文件中添加 Log4Net XML 配置部分,其中包含以下代码:

    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
      </configSections>
      <log4net>
        <appender name="CloudLogger" type="Google.Cloud.Logging.Log4Net.GoogleStackdriverAppender,Google.Cloud.Logging.Log4Net">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message" />
          </layout>
          <projectId value="YOUR-PROJECT-ID" />
          <logId value="mySampleLog" />
        </appender>
        <root>
          <level value="ALL" />
          <appender-ref ref="CloudLogger" />
        </root>
      </log4net>
  2. 在应用的 Global.asax.cs 文件中添加以下代码行,以便将 Log4net 配置为使用 Stackdriver Logging:

    log4net.Config.XmlConfigurator.Configure();
    

    在代码中添加上述代码行后,将 Global.asax.cs 中的 Application_Start() 方法更改为以下内容:

            protected void Application_Start()
            {
                GlobalConfiguration.Configure(WebApiConfig.Register);
    
                // Configure log4net to use Stackdriver logging from the XML configuration file.
                log4net.Config.XmlConfigurator.Configure();
            }
    
  3. 要在应用代码中使用 log4net,请通过添加以下语句来添加客户端库:

    using log4net;
    
  4. 在应用中添加以下代码,以便写入将显示在 Stackdriver 日志查看器的全局资源下的日志。日志名称在 Web.config 文件中指定:

                        // Retrieve a logger for this context.
                        ILog log = LogManager.GetLogger(typeof(WebApiConfig));
    
                        // Log some information to Google Stackdriver Logging.
                        log.Info("Hello World.");
    
  5. 在 Visual Studio 中编译和运行代码。请参阅 Stackdriver Logging 日志查看器的全局资源下的日志条目。

    转到“日志查看器”

选项 3:使用 Stackdriver Logging API 写入自定义日志

您也可以通过直接调用 Stackdriver Logging API 来写入自定义日志。

要使用 Google.Cloud.Logging.V2 开始记录日志,请通过下面其中一条命令安装此库:

软件包管理器

PM> Install-Package Google.Cloud.Logging.V2 -Version 2.2.0

.NET CLI

> dotnet add package Google.Cloud.Logging.V2 --version 2.2.0

安装 Stackdriver Logging 客户端之后,您可以在应用代码中添加以下语句,以便将应用的日志发送到 Stackdriver Logging:

using Google.Cloud.Logging.V2;
using Google.Cloud.Logging.Type;
using Google.Cloud.Api;

自定义以下方法并将其添加到应用代码中:

private void WriteLogEntry(string logId, string message)
{
    var client = LoggingServiceV2Client.Create();
    LogName logName = new LogName(s_projectId, logId);
    LogEntry logEntry = new LogEntry
    {
        LogName = logName.ToString(),
        Severity = LogSeverity.Info,
        TextPayload = $"{typeof(LoggingSample).FullName} - {message}"
    };
    MonitoredResource resource = new MonitoredResource { Type = "global" };
    IDictionary<string, string> entryLabels = new Dictionary<string, string>
    {
        { "size", "large" },
        { "color", "red" }
    };
    client.WriteLogEntries(LogNameOneof.From(logName), resource, entryLabels,
        new[] { logEntry }, _retryAWhile);
    Console.WriteLine($"Created log entry in log-id: {logId}.");
}

写入一些可调用 WriteLogEntry() 的日志记录代码。生成的日志条目将显示在日志查看器的全局资源下:

转到“日志查看器”

如需详细了解日志查看器,请参阅查看日志

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Logging
需要帮助?请访问我们的支持页面