Topik ini menjelaskan cara mencetak dan melihat log dalam lingkungan runtime .NET.
Mencetak log
Log yang dicetak ke output standar (stdout) atau kesalahan standar (stderr) oleh suatu fungsi dikumpulkan ke Layanan Log Sederhana Logstore yang Anda tentukan saat membuat layanan. Anda dapat menggunakan metode context.Logger yang disediakan oleh pustaka fc-dotnet-lib untuk mencetak log. Alternatifnya, Anda juga dapat menggunakan pustaka logging lainnya.
Disarankan untuk menggunakan metode context.Logger untuk mencetak log. Log yang dihasilkan dengan metode ini mencakup ID permintaan, yang memudahkan pencarian log dan pemecahan masalah kesalahan.
Gunakan metode context.Logger untuk mencetak log
Jika Anda menggunakan metode ini untuk mencetak log, setiap entri log mencakup informasi seperti waktu, ID permintaan, dan tingkat log. Berikut adalah contoh kode:
using System.IO;
using System.Threading.Tasks;
using Aliyun.Serverless.Core;
using Microsoft.Extensions.Logging;
namespace Example
{
public class Hello
{
public async Task<Stream> StreamHandler(Stream input, IFcContext context)
{
IFcLogger logger = context.Logger;
logger.LogInformation("Menangani permintaan: {0}", context.RequestId);
logger.LogInformation(string.Format("detail = {0} ", "halo dunia"));
MemoryStream copy = new MemoryStream();
await input.CopyToAsync(copy);
copy.Seek(0, SeekOrigin.Begin);
return copy;
}
static void Main(string[] args){}
}
}Setelah menjalankan kode sampel di atas, konten berikut akan dicetak:
2022-10-09T07:20:31.024Z 9666a77e-65e7-42a9-b011-************ [INFO] detail = halo duniaMengubah tingkat log
Anda dapat mengubah properti EnabledLogLevel dari logger untuk menyesuaikan tingkat log yang akan dicetak. Tabel berikut mencantumkan tingkat log berdasarkan urutan penurunan tingkat keparahan.
Tingkat log | Tingkat keparahan | Operasi |
Critical | 5 |
|
Error | 4 |
|
Warning | 3 |
|
Information | 2 |
|
Debug | 1 |
|
Trace | 0 |
|
Untuk informasi lebih lanjut tentang tingkat log, lihat LogLevel Enum.
Berikut adalah contoh kode:
using System.IO;
using System.Threading.Tasks;
using Aliyun.Serverless.Core;
using Microsoft.Extensions.Logging;
namespace Example
{
public class Hello
{
public async Task<Stream> StreamHandler(Stream input, IFcContext context)
{
IFcLogger logger = context.Logger;
// Mencetak log tingkat Error dan yang lebih tinggi.
logger.EnabledLogLevel = LogLevel.Error;
logger.LogError("kesalahan konsol 1");
logger.LogInformation("info konsol 1");
logger.LogWarning("peringatan konsol 1");
logger.LogDebug("debug konsol 1");
// Mencetak log tingkat Warning dan yang lebih tinggi.
logger.EnabledLogLevel = LogLevel.Warning;
logger.LogError("kesalahan konsol 2");
logger.LogInformation("info konsol 2");
logger.LogWarning("peringatan konsol 2");
logger.LogDebug("debug konsol 2");
// Mencetak log tingkat Information dan yang lebih tinggi.
logger.EnabledLogLevel = LogLevel.Information;
logger.LogInformation("Menangani permintaan: {0}", context.RequestId);
MemoryStream copy = new MemoryStream();
await input.CopyToAsync(copy);
copy.Seek(0, SeekOrigin.Begin);
return copy;
}
static void Main(string[] args){}
}
}Setelah menjalankan kode di atas, konten berikut akan dicetak:
2022-10-09T07:31:42.644Z 77b8ed17-6760-4877-8a43-b79189****** [ERROR] kesalahan konsol 1
2022-10-09T07:31:42.644Z 77b8ed17-6760-4877-8a43-b79189****** [ERROR] kesalahan konsol 2
2022-10-09T07:31:42.644Z 77b8ed17-6760-4877-8a43-b79189****** [WARNING] peringatan konsol 2
2022-10-09T07:31:42.644Z 77b8ed17-6760-4877-8a43-b79189****** [INFO] Menangani permintaan: 77b8ed17-6760-4877-8a43-b79189****** Melihat log
Setelah fungsi dieksekusi, Anda dapat melihat log pada tab Logs halaman Detail Fungsi. Untuk informasi lebih lanjut, lihat Melihat Log Pemanggilan Fungsi.