Archivo de la etiqueta: ULS

Consultar los logs de ULS de SharePoint 2010 en SQL Server

Es posible que se os haya dado el caso de tener que consultar los logs de SharePoint 2010 conocidos como Unified Logging System (ULS), en entornos formados por grandes granjas de servidores… Este proceso en este caso se convierte en algo tedioso, si no tienes forma de identificar en que servidor físico estas haciendo la petición, para consultar su Correlation ID.

Antes de nada indicar que Microsoft recomienda no acceder directamente a la información de la plataforma, desde la base de datos, sino que debe hacerse a través del modelo de objetos de SharePoint. Este seria el único caso excepcional, donde podemos acceder directamente a través de consultas SQL.

SharePoint 2010, a nivel de granja crea una base de datos llamada WSS_Logging, donde almacena toda la información de la plataforma SharePoint, como por ejemplo: información que envía al visor de eventos de Windows, información de los contadores de rendimiento, inventario de los sitios existentes, los logs de ULS… eso si con un periodo de antigüedad de 14 días, toda información que pase de ese tiempo sera eliminada.

La información de esta base de datos, también es usada para consolidar los datos de Web Analytics a través de los jobs Microsoft SharePoint Foundation Usage Data Import y Microsoft SharePoint Foundation Usage Data Processing.

También es importante remarcar, que la información se vuelca desde la granja a la tabla WSS_Logging, a través de varios timer job que se ejecuta cada varios minutos (este valor es diferente para cada uno de ellos). Aquí tenéis el listado de jobs que vuelca información a esta base de datos (estos datos pueden consultarse en la Administración Central):

El job en concreto, que actualiza la información en el ULS es: Diagnostic Data Provider: Trace Log y se ejecuta por defecto cada 10 minutos y esta es su configuración:

Si, como comentábamos anteriormente, queremos acceder a la misma información que existe en los logs de SharePoint, directamente, deberemos realizar consultas sobre la vista: [dbo].[ULSTraceLog]. Es importante remarcar que debes utilizar las vistas y no las tablas para realizar las consultas.

Los campos de esta vista son: [PartitionId], [RowId], [LogTime], [MachineName], [ProcessID], [ProcessName], [ThreadID], [Area], [Category], [Level], [EventID], [Message], [CorrelationId], [RowCreatedTime]. Estos campos son similares a la informacion que se almacenan en los archivos de ULS.

Como veis existe el campo  [CorrelationId] por el cual vamos a conseguir filtrar los datos, para cotar la información.

De este modo, podrás localizar registros de logs sin tener que buscar físicamente en varios archivos ULS, a través de la granja…

Escribir en ULS con SharePoint 2010

SharePoint 2007/20010 dispone de un sistema de logs/trazar llamado Unified Logging System (ULS). Si quieres mas información sobre ULS puedes consultar este artículo de Microsoft: Introducción al registro del sistema de creación de registros unificado (ULS).

Cuando implementamos una aplicación sobre esta plataforma, es muy conveniente, registrar cualquier excepción al ULS para un futuro análisis, que nos permita evaluar y corregir el problema.

En SharePoint 2010 se implementa la clase SPDiagnosticsServiceBase, con la que podemos acceder de una forma mas cómoda que en versiones anteriores a este tipo de información, ya que cuenta con los métodos WriteEvent y WriteTrace, para ello.

El siguiente codigo muestra un ejemplo de como escribir en ULS volcando la información de una excepción capturada:

try
{
    var i = 0;
    var a = 2 / i;
}
catch (Exception ex)
{
    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Mi Categoria", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
}

En el caso que queramos volcar información al ULS sin necesidad de estar dentro de un “catch” puedes usar esto:

SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Mi Categoria", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, "Mi descripcion del error", string.Empty);

Por ultimo, existe una herramienta de Microsoft, para visualizar estos archivos de logs, llamada ULS Viewer, que puedes descargar de forma gratuita desde aquí.