diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 0469a01bac..b22c3b74fc 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,14 @@ 2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-01-16 22:05 UTC+0100 Francesco Saverio Giudice (info/at/fsgiudice.com) + * harbour/source/rdd/usrrdd/rdds/logrdd.prg + - removed sample at end of file + * typos + * harbour/source/rdd/usrrdd/example/exlog.prg + * Altered to reflect new codeblock parameters and added + local MyToString() function to see how handle commands. + 2009-01-16 21:48 UTC+0100 Francesco Saverio Giudice (info/at/fsgiudice.com) * harbour/source/rdd/usrrdd/rdds/logrdd.prg + Added new function hb_LogRddValueToText() diff --git a/harbour/source/rdd/usrrdd/example/exlog.prg b/harbour/source/rdd/usrrdd/example/exlog.prg index fb63200445..16c638f7f0 100644 --- a/harbour/source/rdd/usrrdd/example/exlog.prg +++ b/harbour/source/rdd/usrrdd/example/exlog.prg @@ -26,10 +26,11 @@ PROCEDURE Main() // Activate Logging, it can be stopped/started at any moment hb_LogRddActive( .T. ) - // Uncomment next command to change logged string to standard LOGRDD file - // hb_LogRddMsgLogBlock( {|cTag, cRDDName, cCmd, nWA, cMsg| DToS( Date() ) + " / " + Time() + " " + cTag + ": " + PadR( cRDDName + "_" + cCmd, 20 ) + " - " + cMsg } ) - // Uncomment next command to change standard destination logged string - // hb_LogRddUserLogBlock( {|cTag, cRDDName, cCmd, nWA, cMsg| hb_toOutDebug( DToS( Date() ) + " : " + Time() + " " + cTag + ": " + PadR( cRDDName + "_" + cCmd, 20 ) + " - " + cMsg + "\n\r" ) } ) + // Uncomment next command to change logged string that I have to return to standard LOGRDD file + // hb_LogRddMsgLogBlock( {|cTag, cRDDName, cCmd, nWA, xPar1, xPar2, xPar3| MyToString( cTag, cRDDName, cCmd, nWA, xPar1, xPar2, xPar3 ) } ) + + // Uncomment next command to change standard destination of my logged string + // hb_LogRddUserLogBlock( {|cTag, cRDDName, cCmd, nWA, xPar1, xPar2, xPar3| hb_toOutDebug( MyToString( cTag, cRDDName, cCmd, nWA, xPar1, xPar2, xPar3 ) + "\n\r" ) } ) // Start program logic @@ -43,7 +44,46 @@ PROCEDURE Main() APPEND BLANK field->name := "Francesco" -RETURN + RETURN + +STATIC FUNCTION MyToString( cCmd, nWA, xPar1, xPar2, xPar3 ) + LOCAL cString + + DO CASE + CASE cCmd == "CREATE" + // Parameters received: xPar1 = aOpenInfo + cString := xPar1[ UR_OI_NAME ] + CASE cCmd == "CREATEFIELDS" + // Parameters received: xPar1 = aStruct + cString := hb_ValToExp( xPar1 ) + CASE cCmd == "OPEN" + // Parameters received: xPar1 = aOpenInfo + // cString := 'Table : "' + xPar1[ UR_OI_NAME ] + '", Alias : "' + Alias() + '", WorkArea : ' + LTrim( Str( nWA ) ) + // In this example I don't want to log Open Command + CASE cCmd == "CLOSE" + // Parameters received: xPar1 = cTableName, xPar2 = cAlias + //cString := 'Table : "' + xPar1 + '", Alias : "' + xPar2 + '", WorkArea : ' + LTrim( Str( nWA ) ) + // In this example I don't want to log Close Command + CASE cCmd == "APPEND" + // Parameters received: xPar1 = lUnlockAll + cString := Alias() + "->RecNo() = " + LTrim( Str( RecNo() ) ) + CASE cCmd == "DELETE" + // Parameters received: none + cString := Alias() + "->RecNo() = " + LTrim( Str( RecNo() ) ) + CASE cCmd == "RECALL" + // Parameters received: none + cString := Alias() + "->RecNo() = " + LTrim( Str( RecNo() ) ) + CASE cCmd == "PUTVALUE" + // Parameters received: xPar1 = nField, xPar2 = xValue, xPar3 = xOldValue +#ifndef __XHARBOUR__ + HB_UNUSED_VAR( xPar3 ) // Here don't log previous value +#endif + cString := Alias() + "(" + LTrim( Str( RecNo() ) ) + ")->" + PadR( FieldName( xPar1 ), 10 ) + " := " + hb_LogRddValueToText( xPar2 ) + CASE cCmd == "ZAP" + // Parameters received: none + cString := 'Alias : "' + Alias() + ' Table : "' + dbInfo( DBI_FULLPATH ) + '"' + ENDCASE + RETURN cString FUNCTION hb_LogRddInherit() -RETURN "DBFCDX" + RETURN "DBFCDX" diff --git a/harbour/source/rdd/usrrdd/rdds/logrdd.prg b/harbour/source/rdd/usrrdd/rdds/logrdd.prg index 8111cef358..312492ad83 100644 --- a/harbour/source/rdd/usrrdd/rdds/logrdd.prg +++ b/harbour/source/rdd/usrrdd/rdds/logrdd.prg @@ -54,7 +54,8 @@ * A simple RDD which introduce logging to file. It inheriths from * any existent RDD but if you write / replace / delete something * on tables it writes changes in a log file. - * An example is avalaible at bottom of this file. + * An example is avalaible at + * harbour/source/rdd/usrrdd/example/exlog.prg */ #include "rddsys.ch" @@ -463,7 +464,7 @@ STATIC PROCEDURE ToLog( cCmd, nWA, xPar1, xPar2, xPar3 ) bMsgLogBlock := aRDDData[ ARRAY_MSGLOGBLOCK ] - // If defined a codeblock I send to user infos and he have to return a formatted string + // If defined a codeblock I send to user infos and he has to return a formatted string // Look at local ToString() function for details IF HB_ISBLOCK( bMsgLogBlock ) cLog := Eval( bMsgLogBlock, cTag, cRDDName, cCmd, nWA, xPar1, xPar2, xPar3 ) @@ -486,52 +487,3 @@ STATIC PROCEDURE ToLog( cCmd, nWA, xPar1, xPar2, xPar3 ) ENDIF RETURN -/***************************************************************** - EXAMPLE: - -#include "dbinfo.ch" - -// Request for LOGRDD rdd driver -REQUEST LOGRDD - -// Here put Request for RDD you want to inherit then add -// function hb_LogRddInherit() (see at bottom) -REQUEST DBFCDX - -PROCEDURE Main() - - // Set LOGRDD as default RDD otherwise I have to set explicitly use - // with DRIVER option - RDDSetDefault( "LOGRDD" ) - // Adding Memofile Info - rddInfo( RDDI_MEMOVERSION, DB_MEMOVER_CLIP, "LOGRDD" ) - - // Define Log File Name and position - hb_LogRddLogFileName( "logs\changes.log" ) - // Define Tag to add for each line logged - hb_LogRddTag( NETNAME() + "\" + hb_USERNAME() ) - // Activate Logging, it can be stopped/started at any moment - hb_LogRddActive( .T. ) - - // Uncomment next command to change logged string to standard LOGRDD file - // hb_LogRddMsgLogBlock( {|cTag, cRDDName, cCmd, nWA, cMsg| DToS( Date() ) + " / " + Time() + " " + cTag + ": " + PadR( cRDDName + "_" + cCmd, 20 ) + " - " + cMsg } ) - // Uncomment next command to change standard destination logged string - // hb_LogRddUserLogBlock( {|cTag, cRDDName, cCmd, nWA, cMsg| hb_toOutDebug( DToS( Date() ) + " : " + Time() + " " + cTag + ": " + PadR( cRDDName + "_" + cCmd, 20 ) + " - " + cMsg + "\n\r" ) } ) - - // Start program logic - - // Open a table with logging (default RDD is LOGRDD) - USE test - field->name := "Francesco" - CLOSE - - // Open a table without logging - USE test DRIVER "DBFCDX" - .... - -RETURN - -FUNCTION hb_LogRddInherit() -RETURN "DBFCDX" - -*******************************************************************/