Red de conocimiento informático - Material del sitio web - Cómo implementar el método de salida de registro log4cxx

Cómo implementar el método de salida de registro log4cxx

Log4cxx es uno de los subproyectos del proyecto de código abierto Apache Logging Service, que se utiliza para proporcionar funciones de registro para programas C para que los desarrolladores puedan depurar y auditar los programas de destino. Este artículo presenta el uso y la configuración de log4cxx y ofrece un ejemplo de inicio rápido. Finalmente, también se dan algunas sugerencias prácticas sobre los servicios de registro.

1. Introducción

log4cxx es uno de los subproyectos del servicio de registro Apache del proyecto de código abierto. Es una versión portada del famoso log4j en la comunidad Java y se utiliza. para proporcionar registros para programas C

p>

función para permitir a los desarrolladores depurar y auditar programas de destino.

Para obtener más información sobre log4cxx, visite el sitio web del servicio Apache Loggin/apache/logging/log4cxx/log4cxx-0.9.7.tar.gz

Una vez completada la descarga, por favor Descomprima el paquete en el directorio apropiado ya que lo necesitaremos en el siguiente paso. Esto incluye compilar y copiar los archivos necesarios.

2.2 Compilación

El paquete de lanzamiento original no contiene código compilado, este es un trabajo que debemos completar nosotros mismos. Abra el entorno de desarrollo integrado y cargue el proyecto en el siguiente directorio:

l Msvc\static: este proyecto genera la biblioteca de enlaces estáticos de log4cxx (lib4cxx.lib y lib4cxxs.lib

<); p>l Msvc\dll: Este proyecto genera la biblioteca de vínculos dinámicos (lib4cxx.dll) de log4cxx.

Normalmente no habrá problemas al compilar el proyecto. Busque estos archivos de biblioteca generados en el directorio de salida para usarlos en el siguiente paso.

2.3 Configuración del entorno del proyecto

Primero abra un proyecto que necesite agregar una función de registro en el entorno de desarrollo integrado, o cree un nuevo proyecto con fines experimentales para facilitar la configuración.

Primero, debe configurar los archivos de inclusión log4cxx. Estos archivos se encuentran en el directorio include\log4cxx del paquete log4cxx. Vea la lista "Tools-gt;Options

Projects-gt;Project-gt;VCatalog-gt;Include Files" del VC IDE para determinar cómo agregar estos archivos de inclusión:

l Copie include\log4cxx directamente a VC IDE. Esto tiene sentido si trata log4cxx como un servicio del sistema

porque puede usarlo de la misma manera que la biblioteca estándar, por ejemplo, #include lt;log4cxx/logger.hgt;

l Agregue rutas de inclusión a directorios de archivos ubicados fuera del IDE. Esto puede ser tan simple como apuntar al directorio del paquete log4cxx que se descomprimió en 2.1.

El siguiente paso consiste en configurar la biblioteca log4cxx generada en la Sección 2.2. Depende de cómo uses la biblioteca: enlaces estáticos o enlaces dinámicos.

l En el caso de enlaces estáticos, debe: definir la macro LOG4CXX_STATIC para el precompilador y establecer su ubicación en "Proyecto-gt; Propiedades-gt; Propiedades de configuración-gt; C/C -gt ; Pre

Procesador-gt; Definición de preprocesador"; Especifique la biblioteca dependiente lib4cxxs. Especifique las bibliotecas dependientes lib4cxxs.lib y Ws2_32.lib para el vinculador y establezca la ubicación en "Propiedades del proyecto-gt; gt; Propiedades de configuración -gt;Linker-gt;Input

Input-gt;Dependencias adicionales".

l En el caso de enlaces dinámicos, solo necesita especificar la biblioteca dependiente lib4cxxs.lib para el enlazador, y el método de configuración es el mismo que el anterior.

3. Código de muestra

Esta sección muestra el ejemplo de log4cxx más simple para que pueda comprender rápidamente su descripción general.

Este ejemplo crea funcionalmente un servicio de registro que se puede controlar a través de archivos de configuración según sea necesario y puede enviar información a los archivos y a la consola.

En el proceso de implementación, utilizamos un programa de consola simple y utilizamos log4cxx a través de la biblioteca de enlaces dinámicos.

Los pasos específicos son los siguientes:

1) Cree un proyecto de consola win32 en blanco llamado logdemo y configúrelo como se describe en la Sección 2.3. Tenga en cuenta que aquí estamos utilizando el método del puerto de conexión dinámica.

2) Agregue el código para implementar la función de registro en logdemo.cpp. La lista de códigos completa es la siguiente:

#include "stdafx.h"

#include lt;log4cxx/logger.hgt;

#include lt; log4cxx/ propertyconfigurator.hgt;

usando el espacio de nombres log4cxx;

int _tmain(int argc, _TCHAR* argv[])

{

//Cargue el archivo de configuración de log4cxx, use el archivo de propiedades aquí

PropertyConfigurator::configure("log4cxx.properties");

// Obtenga un Logger, aquí se usa RootLogger

LoggerPtr rootLogger = Logger:.getRootLogger();

// Emitir solicitud de salida de nivel de INFORMACIÓN

LOG4CXX_INFO(rootLogger, _T("funcionó"));

// rootLogger-gt; info(_T("funcionó"));

/ /rootLogger-tt; info(_T("funcionó"));

//rootLogger-tt; info(_T("funcionó")).

3) Cree un nuevo archivo de texto llamado log4cxx.properties y escriba lo siguiente:

# Configure el registrador raíz en el nivel DEBUG, usando dos Appenders ca y fa

log4j.rootLogger=DEBUG, ca, fa

4) Copie log4cxx.dll al directorio de salida. La aplicación debe poder encontrar el archivo de la biblioteca en modo de enlace dinámico.

5) Ejecute el archivo logdemo.exe generado y verifique los resultados para ver si nuestro trabajo valió la pena. Si todo va bien, debería ver un resultado similar al siguiente tanto en la consola como en el archivo de salida:

2006-06-02 16:09:50,609 [2528] raíz de INFORMACIÓN: realmente funciona

4. Arquitectura

4.1 Clases principales

log4cxx tiene tres componentes clave: registrador, anexos y diseños.

El registrador es la clase principal de log4cxx, que solo realiza operaciones de registro; el registrador tiene una estructura jerárquica, con RootLogger en la parte superior; Se pueden adjuntar varios anexos a cada registrador. Los apéndices representan el destino de la salida del registro, como la salida a un archivo, consola, etc. Para cada apéndice, se le puede diseñar como una cuadrícula

a través del diseño.

El diagrama esquemático de estos tres tipos de componentes es el siguiente (no se muestra la relación entre las clases):

(TODO: Estos tres tipos de componentes se presentan aquí respectivamente)

4.2 Clases de configuración

Además, estas clases también se utilizan al configurar log4cxx usando clases como BasicConfigurator, PropertyConfigurator y DOMConfigurator. Entre ellos:

BasicConfigurator proporciona una configuración simple, que incluye el uso de ConsoleAppder como agregado raíz y PatternLayout como diseño predeterminado.

PropertyConfigurator utiliza archivos de propiedades como método de configuración.

DOMConfigurator utiliza archivos de propiedades como método de configuración.

(TODO: explique la configuración aquí)

5. Guía práctica

Si y cómo utilizar el inicio de sesión en un proyecto es lo que los desarrolladores deben hacer. Las opciones técnicas son realizados, que generalmente involucran problemas como el rendimiento del sistema y el propósito del registro.

Algunas de las formas en que utilizamos el registro son el resultado de años de experiencia en la industria y otras son preferencias puramente personales.

1) Cuándo utilizar el registro

En términos generales, el registro se utiliza para depurar y auditar, pero si su proyecto tiene necesidades especiales a este respecto, considere utilizar el registro.

Para la depuración, los registros se suelen utilizar en lugares que están fuera del alcance del depurador IDE. Algunos escenarios de aplicación comunes incluyen:

Depuración de componentes distribuidos. El cliente debe llamar a los componentes del lado del servidor para verificar que estén funcionando correctamente, en cuyo caso la salida del registro se utilizará como ayuda en el diagnóstico de errores

.

Depuración de bibliotecas de enlaces. Este enfoque funciona bien en situaciones en las que no se puede realizar un seguimiento de las bibliotecas externas.

Depuración en entorno de producción. El entorno de producción generalmente se refiere al entorno donde el producto está completamente operativo en el sitio del cliente. Cuando ocurren problemas, los desarrolladores a menudo no están presentes y usar la salida del registro para determinar errores es un método muy efectivo.

Para aplicaciones de auditoría, dependiendo de la situación específica, la función de registro a nivel de programa es sin duda un complemento eficaz de la auditoría a nivel empresarial.

En cualquier caso, log4cxx está a la altura de la tarea, gracias a su capacidad de configuración flexible y múltiples tipos de salida.

2) Problemas de rendimiento

Desactive el registro y configure el cierre y la apertura del registro a través del archivo de configuración

Utilice macros para reemplazar los comandos de salida del registrador

p>

Emitir registros de forma selectiva. Cree una jerarquía de registradores para generar registros de forma selectiva según el nivel

Objetivos de salida. Minimiza el número de objetivos de salida

Elige los formatos de salida adecuados. Utilice SimpleLayout para obtener una velocidad comparable a std::cout.

3) Otros

Nombra el registrador usando el nombre completo de la clase

6 Conclusión

Log4cxx tiene muchas características notables. , la gente de C puede ponerlo en su propia caja de herramientas, estas características incluyen configuración flexible, múltiples métodos de salida, control de formato enriquecido

y excelente rendimiento

C. Si necesita utilizar registros para depurar y auditar durante el desarrollo, es posible que desee log4cxx. Finalmente, y lo más importante, como puedes ver, log4cxx es muy fácil de usar.