Escrito por

Sales Engineer at InterSystems Iberia
Artículo Ricardo Paiva · nov 19, 2024 2m read

Cómo ver el contenido de los archivos de journal fuera del Portal de Gestión

Preguntas frecuentes de InterSystems

Si el archivo de journal es demasiado grande para buscarlo o filtrarlo mediante el Portal de administración, podemos consultarlo mediante los dos métodos siguientes.

① Usando la utilidad ^JRNDUMP
② Usandolo en código

================================================== ========== 

① Usando la utilidad ^JRNDUMP. Por ejemplo, si deseamos seleccionar todos los registros del archivo de journal que incluyen la referencia global ^ABC, hagamos lo siguiente:

*Ejecuta todos los comandos a continuación en el espacio de nombres %SYS.

DO SELECT^JRNDUMP("C:\MyCache\mgr\journal\YYYYMMDD.001","","","^ABC",1)

Si deseamos seleccionar solo registros que coincidan exactamente con la referencia global ^ABC:

 DO SELECT^JRNDUMP("C:\MyCache\mgr\journal\YYYYMMDD.001","","","^ABC",0)

Si deseamos seleccionar solo registros para operaciones Set locales en ^ABC global, hagamos lo siguiente:

 DO SELECT^JRNDUMP("C:\MyCache\mgr\journal\YYYYMMDD.001","","","^ABC","",6)

Si deseamos seleccionar solo registros para operaciones  Set locales y remotas en el ^ABC global:

  DO SELECT^JRNDUMP("C:\MyCache\mgr\journal\YYYYMMDD.001","","","^ABC","","s")

Consulta la página del documento a continuación para obtener más detalles.

Presentando registros de journal usando la utilidad ^JRNDUMP

================================================== ========== 
② How to reference it in a program. You can use the %SYS.Journal.Record class to obtain the record contents of any journal file. Cómo usarlo en código. Podemos utilizar la clase %SYS.Journal.Record para obtener el contenido de los registros de cualquier archivo de journal.

 set jrn="C:\intersystems\cache\mgr\journal\20160101.003"
  set log="C:\temp\journal.log"

  set file=##class(%File).%New(log)
  do file.Open("WSN")
  set rs=##class(%ResultSet).%New("%SYS.Journal.Record:List")
  do rs.Execute(jrn)
  while rs.Next() {
    set time=rs.Get("TimeStamp") // Time: yyyy-mm-dd hh:mm:ss
    set type=rs.Get("TypeName")  // Type: SET, KILL, xxTrans etc.
    set gref=rs.Get("GlobalReference") // global reference
    set gval=rs.Get("NewValue")  // Updated value
    /* if gref["ABC" { */
    set line=time_" ["_type_"] "_gref
    if type="SET" { set line=line_"="_gval }
    do file.WriteLine(line)
    /* } */
  }
  do file.Close()

Consulte la referencia de la clase a continuación para obtener más detalles.

Referencia de la clase (%SYS.Journal.Record:List)