Envía logs a Datadog desde tus aplicaciones de Flutter con el complemento de flutter de Datadog y aprovecha las siguientes funciones:

  • Loguear en Datadog en formato JSON de forma nativa.
  • Utiliza los atributos predeterminados y añade atributos personalizados a cada log enviado.
  • Registra las direcciones IP reales de los clientes y los Agents de usuario.
  • Aprovecha el uso optimizado de red con publicaciones masivas automáticas.

Configuración

Para inicializar el SDK de Datadog Flutter para logs, consulta Configuración.

Una vez inicializado el SDK de Datadog Flutter con un parámetro LoggingConfiguration, puedes crear un DatadogLogger y enviar logs a Datadog.

final logConfiguration = DatadogLoggerConfiguration(
  remoteLogThreshold: LogLevel.debug,
  networkInfoEnabled: true,
);
final logger = DatadogSdk.instance.logs?.createLogger(logConfiguration);

logger?.debug("A debug message.");
logger?.info("Some relevant information?");
logger?.warn("An important warning...");
logger?.error("An error was met!");

También puedes crear registradores adicionales con diferentes servicios y nombres utilizando el método createLogger:

final myLogger = DatadogSdk.instance.logs?.createLogger(
  DatadogLoggerConfiguration(
    service: 'com.example.custom_service',
    name: 'Additional logger'
  )
);

myLogger?.info('Info from my additional logger.');

Para obtener más información sobre las opciones de registro disponibles, consulta la Documentación de clase DatadogLoggerConfiguration.

Gestionar etiquetas (tags)

Las etiquetas establecidas en los registradores son locales para cada registrador.

Añadir etiquetas

Utiliza el método DatadogLogger.addTag para añadir etiquetas a todos los logs enviados por un registrador específico:

// This adds a "build_configuration:debug" tag
logger.addTag("build_configuration", "debug")

Eliminar etiquetas

Utiliza el método DatadogLogger.removeTag para eliminar etiquetas de todos los logs enviados por un registrador específico:

// This removes any tag that starts with "build_configuration"
logger.removeTag("build_configuration")

Para más información, consulta Empezando con etiquetas.

Gestionar atributos

Los atributos establecidos en los registradores son locales para cada registrador.

Atributos predeterminados

Por defecto, los siguientes atributos se añaden a todos los logs enviados por un registrador:

  • http.useragent y sus propiedades extraídas device y OS
  • network.client.ip y sus propiedades geográficas extraídas (country, city)
  • logger.version, versión del SDK de Datadog
  • logger.thread_name, (main, background)
  • version, la versión de la aplicación del cliente extraída de Info.plist o de application.manifest
  • environment, el nombre de entorno utilizado para inicializar el SDK

Añadir atributos

Utiliza el método DatadogLogger.addAttribute para añadir un atributo personalizado a todos los logs enviados por un registrador específico:

logger.addAttribute("user-status", "unregistered")

El value puede ser de la mayoría de los tipos admitidos por la clase StandardMessageCodec.

Eliminar atributos

Utiliza el método DatadogLogger.removeAttribute para eliminar un atributo personalizado de todos los logs enviados por un registrador específico:

// This removes the attribute "user-status" from all logs sent moving forward.
logger.removeAttribute("user-status")

Personalización de la salida de log

Por defecto, para las compilaciones de depuración, DatadogLogger imprime todos logs en la consola de Flutter en el formato:

[{level}] message

Esto se puede personalizar estableciendo una DatadogLoggerConfiguration.customConsoleLogFunction. Para filtrar logs por debajo de un determinado nivel, establece este valor en simpleConsolePrintForLevel:

final config = DatadogLoggerConfiguration(
  // Other configuration options...
  customConsoleLogFunction: simpleConsolePrintForLevel(LogLevel.warn),
);

También puedes reenviar logs de Datadog a otros paquetes de log, como registrador, suministrando una función personalizada:

var Logger logger;
void customDatadogLog(LogLevel level,
  String message,
  String? errorMessage,
  String? errorKind,
  StackTrace? stackTrace,
  Map<String, Object?> attributes,) {
    // Assuming you have a Logger and custom level mapping function:
    logger.log(mapLogLevels(level), message, error: errorKind, stackTrace: stackTrace);
}

final datadogLogger = DatadogSdk.instance.logs?.createLogger(
  DatadogLoggerConfiguration(
    // Other configuration options...
    customConsoleLogFunction: simpleConsolePrintForLevel(LogLevel.warn),
  );
);

Leer más