*Nota: se puede encontrar la fuente aquí.
Aunque quizás sea una de las características más aburridas de un SDK, el registro y la instrumentación es probablemente una de las más valiosas en términos de encontrar y aislar problemas y asegurar que tu aplicación está funcionando como se esperaba. En este post, voy a discutir cómo el nuevo SDK 2.0 de Couchbase maneja el logging, qué frameworks soporta y cómo poner en marcha el logging usando el nuevo cliente.
Todos tenemos algo en común...
Lo haremos cuando todos apoyemos a Apache Registro común ¡lo hacemos! Bromas aparte, el nuevo cliente es compatible con una variedad de implementaciones de registro a través de esta interfaz común, por lo que sus opciones para un proveedor de registro incluyen:
- Log4net
- NLog
- System.Console
- A medida (rollo propio)
- Y otros...
Siempre y cuando la implementación de registro que elijas sea compatible con la interfaz Common.Logging, ¡estás listo!
Cómo empezar
El cliente se entrega con las dependencias para Common.Logging ya definidas y se incluyen en los archivos zip que contienen los binarios o se gestionan mediante el empaquetado Nuget. Para habilitar el registro en System.Console por defecto, sólo tiene que añadir la siguiente configuración a su App.Config o Web.Config:
En el fragmento anterior, primero definimos una nueva sección de configuración para contener la configuración de Logging.Common. Luego añadimos el elemento de configuración y definimos un adaptador de fábrica para System.Console y un poco de formato. Y ya está. Si ejecutas la aplicación verás que toda la información de registro se dirige a stdout.
Registrar en stdout es útil para proyectos de pruebas unitarias y similares, pero no es adecuado para despliegues de producción. En este caso, es mejor utilizar un appender de fábrica como log4net o NLog y escribir los resultados en un archivo o tal vez en una base de datos (¿qué tal de nuevo en Couchbase como un Almacén de Datos Operacional?).
Uso del adaptador Log4Net
Así, que muestra cómo utilizar el defecto ConsoleOutLoggerFactoryAdapter para escribir a stdout, pero ¿qué pasa con el uso de otro marco de registro como Log4Net? Bueno, eso es bastante fácil de hacer asumiendo que has referenciado la dependencia a Log4Net en tu proyecto:
Aquí estamos creando la sección habitual Common.Logging y el elemento de configuración y luego especificando el Log4NetLoggerFactoryAdapter. También estamos especificando una sección log4net y un elemento de configuración para un archivo appender y añadiendo la ruta al archivo en el que escribir. Esto es más como una configuración que se utilizaría en un entorno de producción. Tenga en cuenta que debe tener referencias a los siguientes paquetes Nuget en su archivo packages.config:
En la mayoría de los casos se utiliza Nuget para gestionar este archivo, pero el uso de este archivo le permite "atajar" el diálogo del gestor de paquetes Nuget.
Nota rápida sobre los niveles de registro
El cliente utiliza los siguientes niveles de registro estándar:
- Rastrear
- Depurar
- Error
- Fatal
- Warn
- Información
En general, Debug se utiliza para rastrear la ejecución general de una operación. Info se utiliza para rastrear la parte de gestión de la configuración (cambios en la topología del clúster, etc.) del cliente y todas las excepciones capturadas (y posiblemente relanzadas) se registran como Error.