<BLOCKQUOTE><font size="1" face="Arial, Verdana">code:</font><HR><pre>
ADD TABLE "log_event"
DUMP-NAME "log_even"
ADD FIELD "lge_date" OF "log_event" AS date
FORMAT "99/99/99"
INITIAL ?
ORDER 10
ADD FIELD "lge_time" OF "log_event" AS integer
FORMAT ">>,>>9"
INITIAL "0"
ORDER 20
ADD FIELD "lge_type" OF "log_event" AS character
FORMAT "x(8)"
INITIAL ""
ORDER 30
ADD FIELD "lge_id" OF "log_event" AS integer
FORMAT ">>>,>>9"
INITIAL "0"
ORDER 40
ADD FIELD "lge_user_name" OF "log_event" AS character
FORMAT "x(8)"
INITIAL ""
ORDER 50
ADD FIELD "lge_msgnum" OF "log_event" AS integer
FORMAT "->>>9"
INITIAL "0"
ORDER 60
ADD FIELD "lge_msgtxt" OF "log_event" AS character
FORMAT "x(60)"
INITIAL ""
ORDER 70
ADD INDEX "event_time" ON "log_event"
PRIMARY
INDEX-FIELD "lge_date" ASCENDING
INDEX-FIELD "lge_time" ASCENDING
ADD INDEX "event_msg" ON "log_event"
INDEX-FIELD "lge_msgnum" ASCENDING
/* load.p
*
*/
define buffer lge for log_event.
define variable i as integer no-undo.
define variable lg as character no-undo format "x(30)".
define variable ln as character no-undo.
define variable curr_date as date no-undo.
define variable curr_time as integer no-undo.
update lg label "Log File" with side-labels.
input from value( lg ).
pause 0 before-hide.
form curr_date i with frame a.
repeat:
ln = "".
import unformatted ln.
if ln = "" then next.
/* lines that start with " " are date changes...
*
*/
if substring( ln, 1, 4 ) = " " then
do:
curr_date =
date(
lookup(
substring( ln, 21, 3 ),
"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
),
integer( substring( ln, 25, 2 )),
integer( substring( ln, 37, 4 ))
).
display curr_date with frame a.
next.
end.
/* message lines have a ":" in the 19th position
*
*/
if ( curr_date = ? ) then
next.
else
do transaction:
create log_event.
if ( substring( ln, 19, 1 ) = ":" ) then
assign
log_event.lge_date = curr_date
log_event.lge_time =
integer( substring( ln, 1, 2 )) * 3600 +
integer( substring( ln, 4, 2 )) * 60 +
integer( substring( ln, 7, 2 ))
log_event.lge_type =
trim( substring( ln, 10, 6 ))
log_event.lge_id =
integer( substring( ln, 16, 3 ))
log_event.lge_msgnum =
integer(
substring(
ln,
r-index( ln, "(" ) + 1,
length( ln ) - r-index( ln, "(" ) - 1 ))
log_event.lge_msgtxt =
substring( ln, 21 )
no-error.
/* if an error occurs then store the whole line as the message
* text and mark the message as wierd
*/
if (( error-status:error = true ) or ( substring( ln, 19, 1 ) <> ":" )) then
assign
log_event.lge_date = curr_date
log_event.lge_time = curr_time
log_event.lge_type = "Unknown"
log_event.lge_id = ?
log_event.lge_msgnum = -1
log_event.lge_msgtxt = ln.
else
curr_time = log_event.lge_time.
/* attempt to fix up certain "unknown" messages
*
*/
if log_event.lge_msgnum = -1 then
do:
if lookup( substring( ln, 10, 9 ), "marked af,rfutil -c,bi file t,switched ,this is a,can't swi,backup ai,database " ) > 0 then
assign
log_event.lge_type = "RFUTIL"
log_event.lge_time =
integer( substring( ln, 1, 2 )) * 3600 +
integer( substring( ln, 4, 2 )) * 60 +
integer( substring( ln, 7, 2 ))
log_event.lge_msgnum =
integer(
substring(
ln,
r-index( ln, "(" ) + 1,
length( ln ) - r-index( ln, "(" ) - 1 ))
log_event.lge_msgtxt =
substring( ln, 10 ).
end.
/* I want the UNIX id not the Progress id thus
* the use of msg 452 rather than 708
*/
if log_event.lge_msgnum = 452 then
do:
log_event.lge_user_name =
substring(
ln,
index( ln, "Login by " ) + 9,
index( ln, " on " ) - index( ln, "Login by " ) - 9
).
end.
else if log_event.lge_type = "Usr" then
do:
find last lge where lge.lge_id = log_event.lge_id and lge.lge_msgnum = 452 no-lock no-error.
if available lge then log_event.lge_user_name = lge.lge_user_name.
end.
end.
i = i + 1.
if i modulo 100 = 0 then display i with frame a.
end.
return.
[/code]
ADD TABLE "log_event"
DUMP-NAME "log_even"
ADD FIELD "lge_date" OF "log_event" AS date
FORMAT "99/99/99"
INITIAL ?
ORDER 10
ADD FIELD "lge_time" OF "log_event" AS integer
FORMAT ">>,>>9"
INITIAL "0"
ORDER 20
ADD FIELD "lge_type" OF "log_event" AS character
FORMAT "x(8)"
INITIAL ""
ORDER 30
ADD FIELD "lge_id" OF "log_event" AS integer
FORMAT ">>>,>>9"
INITIAL "0"
ORDER 40
ADD FIELD "lge_user_name" OF "log_event" AS character
FORMAT "x(8)"
INITIAL ""
ORDER 50
ADD FIELD "lge_msgnum" OF "log_event" AS integer
FORMAT "->>>9"
INITIAL "0"
ORDER 60
ADD FIELD "lge_msgtxt" OF "log_event" AS character
FORMAT "x(60)"
INITIAL ""
ORDER 70
ADD INDEX "event_time" ON "log_event"
PRIMARY
INDEX-FIELD "lge_date" ASCENDING
INDEX-FIELD "lge_time" ASCENDING
ADD INDEX "event_msg" ON "log_event"
INDEX-FIELD "lge_msgnum" ASCENDING
/* load.p
*
*/
define buffer lge for log_event.
define variable i as integer no-undo.
define variable lg as character no-undo format "x(30)".
define variable ln as character no-undo.
define variable curr_date as date no-undo.
define variable curr_time as integer no-undo.
update lg label "Log File" with side-labels.
input from value( lg ).
pause 0 before-hide.
form curr_date i with frame a.
repeat:
ln = "".
import unformatted ln.
if ln = "" then next.
/* lines that start with " " are date changes...
*
*/
if substring( ln, 1, 4 ) = " " then
do:
curr_date =
date(
lookup(
substring( ln, 21, 3 ),
"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
),
integer( substring( ln, 25, 2 )),
integer( substring( ln, 37, 4 ))
).
display curr_date with frame a.
next.
end.
/* message lines have a ":" in the 19th position
*
*/
if ( curr_date = ? ) then
next.
else
do transaction:
create log_event.
if ( substring( ln, 19, 1 ) = ":" ) then
assign
log_event.lge_date = curr_date
log_event.lge_time =
integer( substring( ln, 1, 2 )) * 3600 +
integer( substring( ln, 4, 2 )) * 60 +
integer( substring( ln, 7, 2 ))
log_event.lge_type =
trim( substring( ln, 10, 6 ))
log_event.lge_id =
integer( substring( ln, 16, 3 ))
log_event.lge_msgnum =
integer(
substring(
ln,
r-index( ln, "(" ) + 1,
length( ln ) - r-index( ln, "(" ) - 1 ))
log_event.lge_msgtxt =
substring( ln, 21 )
no-error.
/* if an error occurs then store the whole line as the message
* text and mark the message as wierd
*/
if (( error-status:error = true ) or ( substring( ln, 19, 1 ) <> ":" )) then
assign
log_event.lge_date = curr_date
log_event.lge_time = curr_time
log_event.lge_type = "Unknown"
log_event.lge_id = ?
log_event.lge_msgnum = -1
log_event.lge_msgtxt = ln.
else
curr_time = log_event.lge_time.
/* attempt to fix up certain "unknown" messages
*
*/
if log_event.lge_msgnum = -1 then
do:
if lookup( substring( ln, 10, 9 ), "marked af,rfutil -c,bi file t,switched ,this is a,can't swi,backup ai,database " ) > 0 then
assign
log_event.lge_type = "RFUTIL"
log_event.lge_time =
integer( substring( ln, 1, 2 )) * 3600 +
integer( substring( ln, 4, 2 )) * 60 +
integer( substring( ln, 7, 2 ))
log_event.lge_msgnum =
integer(
substring(
ln,
r-index( ln, "(" ) + 1,
length( ln ) - r-index( ln, "(" ) - 1 ))
log_event.lge_msgtxt =
substring( ln, 10 ).
end.
/* I want the UNIX id not the Progress id thus
* the use of msg 452 rather than 708
*/
if log_event.lge_msgnum = 452 then
do:
log_event.lge_user_name =
substring(
ln,
index( ln, "Login by " ) + 9,
index( ln, " on " ) - index( ln, "Login by " ) - 9
).
end.
else if log_event.lge_type = "Usr" then
do:
find last lge where lge.lge_id = log_event.lge_id and lge.lge_msgnum = 452 no-lock no-error.
if available lge then log_event.lge_user_name = lge.lge_user_name.
end.
end.
i = i + 1.
if i modulo 100 = 0 then display i with frame a.
end.
return.
[/code]