Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: MHVUL3

MHVUL3.m

Go to the documentation of this file.
  1. MHVUL3 ;WAS/GPM - MHV UTILITIES - LOGGING ; 3/17/06 12:03am [5/24/06 10:18am]
  1. ;;1.0;My HealtheVet;**1**;Aug 23, 2005
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. Q
  1. ; Utilities supporting user options for logging
  1. ;
  1. LOGONO ; Turn on logging
  1. N RESULT,DIR,DIRUT,DA,X,Y,DTM,%DT
  1. D LOGINFOO
  1. W !
  1. D LOGINFO^MHVUL1(.RESULT)
  1. I RESULT("DELETE")="" S RESULT("DELETE")=$$HTFM^XLFDT($H+30,1)
  1. ;
  1. ; If logging is already on prompt if want to change deletion date
  1. I RESULT("STATE") D Q:$D(DIRUT)!'Y
  1. . S DIR(0)="Y"
  1. . S DIR("A",1)="Logging is already turned on."
  1. . S DIR("A")="Reset deletion date"
  1. . S DIR("?",1)="MHV application logging is already active."
  1. . S DIR("?")="You may enter a new deletion date for the log."
  1. . S DIR("B")="NO"
  1. . D ^DIR
  1. . Q
  1. ;
  1. ; Prompt for deletion date
  1. K DIR,DIRUT,DA,X,Y
  1. S DIR(0)="DA^"_DT_"::TX"
  1. S DIR("A")="Log Deletion Date: "
  1. S DIR("?",1)="Enter a future date to delete MHV application log."
  1. S DIR("?",2)="After this date logging will automatically be stopped,"
  1. S DIR("?")="and all log entries permanently deleted."
  1. S DIR("B")=$$FMTE^XLFDT(RESULT("DELETE"),1)
  1. D ^DIR Q:$D(DIRUT)
  1. ;
  1. D LOGON^MHVUL1(.RESULT,Y)
  1. W !!,"MHV application logging switched on."
  1. W !,"Log will be deleted on "_$$FMTE^XLFDT($P(RESULT,"^",2),1)_"."
  1. Q
  1. ;
  1. LOGSETO ; Set logging parameters
  1. N RESULT,UPDATE,DIR,DIRUT,DA,X,Y,DTM,%DT,N,I
  1. D LOGINFOO
  1. W !
  1. D LOGINFO^MHVUL1(.UPDATE)
  1. ;
  1. ; State ON/OFF
  1. K DIR,DIRUT,DA,X,Y
  1. S DIR(0)="SA^1:ON;0:OFF"
  1. S DIR("A")="Logging: "
  1. S DIR("?")="Enter ON or OFF"
  1. S DIR("B")=$S(UPDATE("STATE"):"ON",1:"OFF")
  1. D ^DIR
  1. Q:$D(DIRUT)
  1. S UPDATE("STATE")=Y
  1. ;
  1. ; Deletion Date
  1. K DIR,DIRUT,DA,X,Y
  1. S DIR(0)="DA^"_DT_"::TX"
  1. S DIR("A")="Log Deletion Date: "
  1. S DIR("?",1)="Enter a future date to delete MHV application log."
  1. S DIR("?",2)="After this date logging will automatically be stopped,"
  1. S DIR("?")="and all log entries permanently deleted."
  1. S DIR("B")=$$FMTE^XLFDT(UPDATE("DELETE"))
  1. D ^DIR Q:$D(DIRUT)
  1. S UPDATE("DELETE")=Y
  1. ;
  1. ; Logging Level
  1. K DIR,DIRUT,DA,X,Y
  1. S DIR(0)="SA^E:ERROR;T:TRACE;N:NAMED;D:DEBUG"
  1. S DIR("A")="Logging Level? "
  1. S DIR("?",1)="Set logging level"
  1. S DIR("?",2)="ERROR - only errors logged"
  1. S DIR("?",3)="TRACE - Trace and errors logged"
  1. S DIR("?",4)="NAMED - Named entries, trace and errors logged"
  1. S DIR("?")="DEBUG - All entries logged"
  1. S DIR("B")=UPDATE("LEVEL")
  1. D ^DIR
  1. Q:$D(DIRUT)
  1. S UPDATE("LEVEL")=Y(0)
  1. ;
  1. ; Names
  1. I UPDATE("LEVEL")="NAMED" D
  1. . S N=UPDATE("NAMES")
  1. . F I=2:1:$L(N,"^") S:$P(N,"^",I)'="" UPDATE("NAMES",$P(N,"^",I))=""
  1. . F D Q:$D(DIRUT)
  1. .. K DIR,DIRUT,DA,X,Y
  1. .. S DIR(0)="FO^"
  1. .. S DIR("A")="Entry name"
  1. .. S DIR("A",1)=UPDATE("NAMES")
  1. .. S DIR("?",1)="Enter names of entries to log"
  1. .. S DIR("?")="Remove entries by prefixing with @"
  1. .. S DIR("B")=""
  1. .. D ^DIR
  1. .. Q:$D(DIRUT)
  1. .. I $E(Y)="@" K UPDATE("NAMES",$E(Y,2,$L(Y)))
  1. .. E S UPDATE("NAMES",Y)=""
  1. .. S UPDATE("NAMES")="^",N=""
  1. .. F S N=$O(UPDATE("NAMES",N)) Q:N="" S UPDATE("NAMES")=UPDATE("NAMES")_N_"^"
  1. .. Q
  1. . Q
  1. ;
  1. ; Auto Purge ON/OFF
  1. K DIR,DIRUT,DA,X,Y
  1. S DIR(0)="SA^1:ON;0:OFF"
  1. S DIR("A")="Auto Purge: "
  1. S DIR("?")="Enter ON or OFF"
  1. S DIR("B")=$S(UPDATE("AUTOPURGE"):"ON",1:"OFF")
  1. D ^DIR
  1. Q:$D(DIRUT)
  1. S UPDATE("AUTOPURGE")=Y
  1. ;
  1. ; Days to Keep
  1. I UPDATE("AUTOPURGE") D Q:$D(DIRUT)
  1. . I 'UPDATE("DAYS") S UPDATE("DAYS")=7
  1. . K DIR,DIRUT,DA,X,Y
  1. . S DIR(0)="N^1:365"
  1. . S DIR("A")="Days to Keep"
  1. . S DIR("?")="Enter number of days to keep log entries"
  1. . S DIR("B")=UPDATE("DAYS")
  1. . D ^DIR
  1. . S UPDATE("DAYS")=Y
  1. . Q
  1. ;
  1. W !!,"New MHV Application Log Settings:"
  1. D LOGINFOD(.UPDATE)
  1. W !
  1. S DIR(0)="Y"
  1. S DIR("A")="Ok to proceed with update"
  1. S DIR("?")="Update logging parameters with those shown?"
  1. S DIR("B")="NO"
  1. D ^DIR Q:$D(DIRUT)
  1. I 'Y Q
  1. ;
  1. D LOGSET^MHVUL1(.RESULT,.UPDATE)
  1. W !!,"Logging parameters updated"
  1. D LOGINFOO
  1. Q
  1. ;
  1. LOGOFFO ;Turn off logging
  1. N RESULT,DIR,DIRUT,DA,X,Y
  1. D LOGINFOO
  1. W !
  1. D LOGINFO^MHVUL1(.RESULT)
  1. ; Quit if logging is already off
  1. I 'RESULT("STATE") W !,"Logging is already turned off." Q
  1. S DIR(0)="Y"
  1. S DIR("A")="Turn off logging"
  1. S DIR("?")="Turn off MHV application logging."
  1. S DIR("B")="NO"
  1. D ^DIR Q:$D(DIRUT)
  1. I 'Y Q
  1. ;
  1. D LOGOFF^MHVUL1(.RESULT)
  1. W !!,"MHV application logging switched off."
  1. W !,"Log will be deleted on "_$$FMTE^XLFDT($P(RESULT,"^",2),1)_"."
  1. Q
  1. ;
  1. LOGPRGO ; Purge log
  1. N RESULT,DIR,DIRUT,DA,X,Y,DTM,%DT
  1. D LOGINFOO
  1. W !
  1. ; Purge from date
  1. S DIR(0)="D^:"_DT_":TX"
  1. S DIR("A")="Purge From Date"
  1. S DIR("?",1)="Enter a past date to purge MHV application log."
  1. S DIR("?")="All log entries older than this date will be removed."
  1. S DIR("B")=$$HTE^XLFDT($H-7,1)
  1. D ^DIR Q:$D(DIRUT)
  1. S DTM=Y
  1. ;
  1. ; Confirm Purge
  1. K DIR,DIRUT,DA,X,Y
  1. S DIR(0)="Y"
  1. S DIR("A",1)="Log will be purged from "_$$FMTE^XLFDT(DTM)_"."
  1. S DIR("A")="OK to proceed"
  1. S DIR("?")="All log entries older than this date will be removed."
  1. S DIR("B")="NO"
  1. D ^DIR Q:$D(DIRUT)
  1. Q:'Y
  1. ;
  1. D LOGPRG^MHVUL1(.RESULT,DTM)
  1. W !!,"Log purged from "_$$FMTE^XLFDT($P(RESULT,"^",2),1)_"."
  1. Q
  1. ;
  1. LOGINFOO ; Display log information
  1. N RESULT
  1. D LOGINFO^MHVUL1(.RESULT)
  1. W !!,"MHV Application Log Settings:"
  1. D LOGINFOD(.RESULT)
  1. Q
  1. ;
  1. LOGINFOD(RESULT) ; Display log
  1. W !," Log Creation Date: ",$$FMTE^XLFDT(RESULT("CREATED"))
  1. W !," Log Deletion Date: ",$$FMTE^XLFDT(RESULT("DELETE"))
  1. W !," Oldest Entry: ",$$FMTE^XLFDT(RESULT("OLDEST"))
  1. W !," Newest Entry: ",$$FMTE^XLFDT(RESULT("NEWEST"))
  1. W !," Logging: ",$S(RESULT("STATE"):"",1:"OFF")
  1. I RESULT("STATE") D
  1. . W RESULT("LEVEL")_" mode"
  1. . I RESULT("LEVEL")="NAMED" W !,?16,"Names: ",RESULT("NAMES")
  1. . Q
  1. W !," Auto Purge: ",$S(RESULT("AUTOPURGE"):"",1:"OFF")
  1. I RESULT("AUTOPURGE") W +RESULT("DAYS")," days"
  1. Q
  1. ;
  1. LOGSIZEO ; Display log size information
  1. N RESULT
  1. D LOGSIZE^MHVUL1(.RESULT)
  1. W !!,"MHV Application Log Size:"
  1. D LOGSIZED(.RESULT)
  1. Q
  1. ;
  1. LOGSIZED(RESULT) ; Display log size
  1. W !," Number of Entries: ",RESULT("ENTRY COUNT")
  1. W !," Number of Nodes: ",RESULT("NODE COUNT")
  1. W !," Approx. size in KB: ",RESULT("BYTE COUNT")\1024
  1. Q
  1. ;
  1. LOGVIEWO ; View log
  1. N LOG,CNT,DTM,J,ENTRY,RESULT,DIR,DIRUT,DTOUT,DUOUT,DA,X,Y,DTM
  1. ; Use the browser if supported by emulation
  1. I $$TEST^DDBRT D LOGBROWS^MHVUL2 Q
  1. K ^TMP("MHV LOG SUMMARY",$J)
  1. K ^TMP("MHV LOG DETAIL",$J)
  1. D LOGSUM^MHVUL1(.LOG)
  1. S CNT=$P(@LOG,"^",2)
  1. I CNT<1 D LOGSUMD(LOG) Q
  1. F D Q:$D(DIRUT)
  1. . D LOGSUMD(LOG) Q:$D(DTOUT)!$D(DUOUT)
  1. . K DIR,X,DIRUT
  1. . I 'Y D Q:$D(DIRUT)
  1. .. S DIR(0)="N^1:"_CNT
  1. .. S DIR("A")="Select Entry"
  1. .. S DIR("?")="Select an entry to display"
  1. .. D ^DIR
  1. .. Q
  1. . ;
  1. . S DTM=$P(@LOG@(Y),"^")
  1. . S J=$P(@LOG@(Y),"^",2)
  1. . D LOGDET^MHVUL1(.ENTRY,DTM,J)
  1. . D LOGDETD(ENTRY)
  1. . K @ENTRY
  1. . Q
  1. K ^TMP("MHV LOG SUMMARY",$J)
  1. K ^TMP("MHV LOG DETAIL",$J)
  1. Q
  1. ;
  1. LOGSUMD(LOG) ; Display log summary
  1. N CNT,DTM,J,N
  1. W !!,"LOG SUMMARY"
  1. W !,?5,"Entry",?12,"Timestamp",?37,"Job",?50,"Items"
  1. S CNT=$P(@LOG,"^",2)
  1. I CNT<1 W !!,?12,"EMPTY" Q
  1. S Y=0
  1. K DIRUT,DTOUT,DUOUT
  1. F I=1:1:CNT D Q:Y!$D(DTOUT)!$D(DUOUT)
  1. . I I#22=0 D Q:Y!$D(DTOUT)!$D(DUOUT)
  1. .. K DIR,X,Y,DIRUT,DTOUT,DUOUT
  1. .. S DIR(0)="NO^1:"_CNT
  1. .. S DIR("A",1)="Press <RETURN> to see more, '^' to exit, OR"
  1. .. S DIR("A")="Select Entry"
  1. .. S DIR("?")="Select an entry to display"
  1. .. D ^DIR
  1. .. Q
  1. . S DTM=$$FMTE^XLFDT(-$P(@LOG@(I),"^"))
  1. . S J=$P(@LOG@(I),"^",2)
  1. . S N=$P(@LOG@(I),"^",3)
  1. . W !,?5,I,?12,DTM,?37,J,?50,N
  1. . Q
  1. Q
  1. ;
  1. LOGDETD(ENTRY) ;Display log entry
  1. N CNT,DTM,J,N
  1. W !!,"LOG DETAIL"
  1. S CNT=$P(@ENTRY,"^",2)
  1. I CNT<1 W !,?12,"EMPTY" Q
  1. W !,?12,"Timestamp",?37,"Job",?50,"Items",?60,"Nodes"
  1. S DTM=$$FMTE^XLFDT(-$P(@ENTRY@(0),"^"))
  1. S J=$P(@ENTRY@(0),"^",2)
  1. S N=$P(@ENTRY@(0),"^",3)
  1. W !,?12,DTM,?37,J,?50,N,?60,CNT
  1. S J=3
  1. F I=1:1:CNT D Q:$D(DIRUT)
  1. . S J=($L(@ENTRY@(I))+5)\80+1+J
  1. . I J>23 D Q:$D(DIRUT)
  1. .. K DIR,X,Y,DIRUT
  1. .. S DIR(0)="E"
  1. .. D ^DIR
  1. .. S J=($L(@ENTRY@(I))+5)\80+1
  1. .. Q
  1. . W !,?5,@ENTRY@(I)
  1. . Q
  1. ;
  1. Q:$D(DIRUT)
  1. K DIR,X,Y,DIRUT
  1. S DIR(0)="E"
  1. D ^DIR
  1. Q
  1. ;