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. Anda juga dapat menggunakan pustaka logging lainnya untuk mencetak log.
Disarankan untuk menggunakan metode context.Logger untuk mencetak log karena log tersebut mencakup ID permintaan, yang membantu dalam menyelesaikan masalah kesalahan.
Gunakan context.Logger untuk mencetak log
Jika Anda menggunakan metode ini untuk mencetak log, setiap 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){}
}
}Log berikut akan dicetak setelah Anda menjalankan kode sampel di atas:
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 ingin dicetak. Tabel berikut mencantumkan tingkat log dalam urutan penurunan tingkat keparahan.
Tingkat Log | Tingkat | Operasi API |
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 di atasnya.
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 di atasnya.
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 di atasnya.
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){}
}
}Log berikut akan dicetak setelah Anda menjalankan kode di atas:
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.