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.