Cette rubrique explique comment imprimer et consulter des journaux dans un environnement .NET.
Impression des journaux
Le contenu qu'une fonction envoie vers la sortie standard (stdout) ou l'erreur standard (stderr) est collecté dans le Logstore spécifié lors de la création du service. Pour imprimer des journaux, utilisez la méthode context.Logger de la bibliothèque fc-dotnet-lib. Vous pouvez également recourir à d'autres bibliothèques de journalisation.
Utilisez la méthode context.Logger pour imprimer des journaux. Les entrées générées ainsi intègrent automatiquement le RequestId, ce qui facilite la localisation des journaux pertinents en cas d'erreur.
Utilisation de context.Logger pour l'impression des journaux
Chaque entrée de journal produite par cette méthode contient diverses informations, notamment l'horodatage, le RequestId et le niveau de sévérité. L'exemple de code suivant illustre ce fonctionnement.
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){}
}
}
L'exécution de cet exemple génère la sortie de journal suivante.
2022-10-09T07:20:31.024Z 9666a77e-65e7-42a9-b011-************ [INFO] detail = hello world
Modification du niveau de journalisation
Modifiez le niveau de journalisation en ajustant la propriété EnabledLogLevel du logger. Les niveaux disponibles sont présentés ci-dessous, classés par ordre décroissant de priorité.
|
Niveau de journal |
Niveau |
Interface |
|
Critical |
5 |
|
|
Error |
4 |
|
|
Warning |
3 |
|
|
Information |
2 |
|
|
Debug |
1 |
|
|
Trace |
0 |
|
Pour plus d'informations sur les niveaux de journalisation, consultez LogLevel Enum.
L'exemple de code ci-dessous illustre cette configuration.
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;
// Print log messages with a level of Error or higher.
logger.EnabledLogLevel = LogLevel.Error;
logger.LogError("console error 1");
logger.LogInformation("console info 1");
logger.LogWarning("console warn 1");
logger.LogDebug("console debug 1");
// Print log messages with a level of Warning or higher.
logger.EnabledLogLevel = LogLevel.Warning;
logger.LogError("console error 2");
logger.LogInformation("console info 2");
logger.LogWarning("console warn 2");
logger.LogDebug("console debug 2");
// Print log messages with a level of Information or higher.
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){}
}
}
L'exécution de ce code produit la sortie de journal suivante.
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******
Consultation des journaux
Une fois la fonction exécutée, consultez les journaux sous l'onglet Invocation Log de la page de détails de la fonction. Pour plus d'informations, voir Consulter les journaux d'invocation.