本文介紹如何在.NET運行環境下打印日志和查看日志。
打印日志
函數向標準輸出stdout或標準錯誤stderr打印的內容會被收集到創建服務時指定的Logstore中。您可以使用fc-dotnet-lib庫提供的context.Logger
方法打印日志,也可以使用其他日志庫打印日志。
說明
推薦您使用context.Logger
方法打印日志,使用該方法打印的日志自動包含RequestId,便于在出現錯誤的時候定位問題日志。
使用context.Logger打印日志
使用該方法打印的每條日志中都包含時間、RequestId和日志級別等信息。示例代碼如下所示。
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("Handle request: {0}", context.RequestId);
logger.LogInformation(string.Format("detail = {0} ", "hello world"));
MemoryStream copy = new MemoryStream();
await input.CopyToAsync(copy);
copy.Seek(0, SeekOrigin.Begin);
return copy;
}
static void Main(string[] args){}
}
}
執行上面的示例代碼,輸出的日志內容如下。
2022-10-09T07:20:31.024Z 9666a77e-65e7-42a9-b011-************ [INFO] detail = hello world
改變日志級別
您可以通過改變Logger的Property EnabledLogLevel
改變日志級別,日志級別從高到低排列如下。
日志級別 | Level | 接口 |
Critical | 5 |
|
Error | 4 |
|
Warning | 3 |
|
Information | 2 |
|
Debug | 1 |
|
Trace | 0 |
|
關于日志級別的更多信息, 請參見LogLevel Enum。
示例代碼如下所示。
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;
// 打印大于等于Error級別的日志信息。
logger.EnabledLogLevel = LogLevel.Error;
logger.LogError("console error 1");
logger.LogInformation("console info 1");
logger.LogWarning("console warn 1");
logger.LogDebug("console debug 1");
// 打印大于等于Warning級別的日志信息。
logger.EnabledLogLevel = LogLevel.Warning;
logger.LogError("console error 2");
logger.LogInformation("console info 2");
logger.LogWarning("console warn 2");
logger.LogDebug("console debug 2");
// 打印大于等于Information級別的日志信息。
logger.EnabledLogLevel = LogLevel.Information;
logger.LogInformation("Handle request: {0}", context.RequestId);
MemoryStream copy = new MemoryStream();
await input.CopyToAsync(copy);
copy.Seek(0, SeekOrigin.Begin);
return copy;
}
static void Main(string[] args){}
}
}
執行以上代碼輸出的日志內容如下所示。
2022-10-09T07:31:42.644Z 77b8ed17-6760-4877-8a43-b79189****** [ERROR] console error 1
2022-10-09T07:31:42.644Z 77b8ed17-6760-4877-8a43-b79189****** [ERROR] console error 2
2022-10-09T07:31:42.644Z 77b8ed17-6760-4877-8a43-b79189****** [WARNING] console warn 2
2022-10-09T07:31:42.644Z 77b8ed17-6760-4877-8a43-b79189****** [INFO] Handle request: 77b8ed17-6760-4877-8a43-b79189******
查看日志
函數執行完成后,您可以在函數詳情頁的調用日志頁簽查看日志信息。具體操作和說明,請參見查看調用日志。
文檔內容是否對您有幫助?