August 09, 2010

Manejando bitácoras

En el siguiente escenario manejaremos la bitácora del servicio NetLogon, la cual se registra en el archivo netlogon.log, el cual se almacena en la ruta %windir%\Debug, podría ser cualquier archivo pero me gusta la idea de explicarlo con este específicamente.
Presentare dos soluciones (si es que les puedo llamar así) para tratar de abarcar más escenarios y así que eso le sea útil a mas personas.
Primero, en este caso utilizaremos WinRAR para archivar el archivo antiguo, además tendremos un repositorio común, el cual representaremos con la unidad Z, en la cual encontraremos una serie de folders llamados archive-%hostname% (%hostname% = el nombre de tu equipo).
Alternativamente podría agregar la ruta de instalación de WinRAR a la variable PATH, para asi no tener que especificar la ruta completa del utilitario (SETX PATH "%PATH%;C:\Program Files\WinRAR\" –M)
A continuación la serie de comandos para lograr nuestro objetivo.


# necesitamos detener el servicio para reemplazar la bitácora
Stop-Service netlogon
# esperamos unos segundos para que el servicio se detenga completamente
Start-Sleep -Seconds 7
#invocamos el utilitario RAR.exe, le indicamos crear un archivo llamado netlog-archiveYYYY-MM-DD-HH-MM-SS.rar (año-mes-día-hora-minuto-segundo), utilizaremos el nivel máximo de compresión (m5), indicamos el archivo a comprimir, eso sí solo el archivo, sin su ruta de carpetas (ep) y luego lo eliminamos (df).
"C:\Program Files\WinRAR\rar.exe" a Z:\archive-%hostname%\netlog-archive.rar -ag[YYYY-MM-DD-HH-MM-SS] -m5 C:\Windows\Debug\netlogon.log -ep -df
# ahora simplemente iniciamos el servicio y listo!
Start-Service netlogon

En el siguiente caso no tenemos un utilitario de compresión así que haremos un poco de rotación de bitácoras, tambien utilizaremos comandos de batch, en el ejemplo anterior el sabor era PowerShell asi que variemos un poco.


# eliminamos el archivo más antiguo (versión 0 = más reciente, versión 2= mas antiguo)
del C:\Windows\Debug\netlogon-2.log
# la version 1 es renombrada a version 2
ren C:\Windows\Debug\netlogon-1.log C:\Windows\Debug\netlogon-2.log
# la version 0 es renombrada a version 1
ren C:\Windows\Debug\netlogon-0.log C:\Windows\Debug\netlogon-1.log
# detenemos el servicio del netlogon
net stop netlogon
# esperamos un tiempo prudencial para que este se detenga por completo
Start-Sleep -Seconds 7
# renombramos el archivo original a version 0
ren C:\Windows\Debug\netlogon.log C:\Windows\Debug\netlogon-0.log
# iniciamos el servicio
net start netlogon
# esperamos un tiempo prudencial para que este inicie satisfactoriamente
Start-Sleep -Seconds 7
# ahora para referencia guardaremos la fecha de ejecución en el archivo aquí mencionado
date /t && time /t >>C:\Windows\Debug\renombradoLog.txt
# tambien registraremos el estado del servicio luego de ejecutar esta tarea
sc query netlogon >>C:\Windows\Debug\renombradoLog.txt

*En Windows Server 2008 no existe ni wait ni sleep por lo cual recurro al cmdlet Start-Sleep
**El comando now se puede usar para reemplazar la parte de “date /t && time /t
Como vemos estas tareas son bastante flexibles y las líneas de una se pueden complementar con otras, también si usted gusta del sabor de WinZip podría entonces utilizar wzzip.
Espero esto les sea útil y les facilite un poco las cosas, hasta pronto!