6.2 Loggers
A CEF logger is used by components to log operations.
TCEF_Logger is the means by which CEF logs component operations. The class has the following methods:
void Attach
Increments the object's reference count.
void Detach
Decrements the object's reference count. If the reference count reaches 0 (or less), the object destructs itself.
integer Get_Data_Radix
Returns the data radix for logging. See the Set_Data_Radix for details on the values.
integer Get_Options
Returns the current logging options. See Set_Options for details on the values.
boolean Get_Paused
Returns true if logging is paused.
integer Get_Wrap_Column
Returns the column at which data is wrapped. See Set_Wrap_Column.
void Set_Data_Radix( integer Value )
Radix to use for logged data. This has no effect on non-data logging.
Value | Mnuemonic | Description |
---|---|---|
0 | CEF_LR_Print_Friendly | Print-friendly ASCII string (control codes replaced with ".") |
1 | CEF_LR_ASCII | Literal ASCII string |
2-36 | Base to represent data in | |
37-49 | reserved for future use | |
50 | CEF_LR_Radix50 | Radix 50 representation |
51 | CEF_LR_EBCDIC | Convert data from EBCDIC to ASCII |
52+ | reserved for future use |
void Set_Options( integer Value )
Sets the logging options. The values are:
Value | Mnuemonic | Description |
---|---|---|
1 | LO_Append | Append to existing log file. |
2 | LO_Include_TimeStamp | Include Timestamp in log. |
4 | LO_Include_Name | Include Component name in log. |
8 | LO_Hide_Execution | Hide execution logs. |
16 | LO_Hide_Data | Hide data logs. |
32 | LO_Hide_Sent_Signal | Hide sent signal logs. |
64 | LO_Hide_Received_Signal | Hide received signal logs. |
128 | LO_Hide_State_Change | Hide state change logs. |
256 | LO_Hide_Read | Hide read operation logs. |
512 | LO_Hide_Write | Hide write operation logs. |
1024 | LO_Hide_Input | Hide input operation logs. |
2048 | LO_Hide_Output | Hide output operation logs. |
4096 | LO_Hide_Other | Hide logs not covered by other options. |
void Set_Paused( boolean Value )
Pauses the logging if Value is True and resumes logging if the Value is False.
void Set_Wrap_Column( integer Value )
Sets the column where data wraps. The logger will output up to this many characters before starting a new line. If 0, the logger does no wrapping.
void Set_UI( TUI_Interface* Value )
Set UI component for the logger (for retrieving clock times, etc.)
string Filename
Returns name of current log file.
boolean Open( string Filename, boolean Append )
Open the specified file as the log file. If Append is true, the existing file is appended to. If the file doesn't exist it is created. If Append is false, any existing file is overwritten. Returns True if the file was opened and false otherwise.
void Terminate
Terminate the logger instance. This should be done via the Deatch call.
void Log( TComponent* C, string S, integer Len, boolean Continuation, integer Log_Type )
Log an item to the log file. S is the data to log. Len is the length of S. If Len is -1, S is assumed to be null-terminated. Continuation is false if this is the first item of a log operation. If continuation is true, this is considered to be part of the preceeding log item. Log_Type indicates the type of information being logged, as follows:
Value | Mnuemonic | Description |
---|---|---|
0 | LT_Execution | Sent at the start of an operation (eg CPU instruction execution). |
1 | LT_Data | Data. |
2 | LT_Sent_Signal | Sent signal. |
3 | LT_Received_Signal | Received signal. |
4 | LT_State_Change | State change. |
5 | LT_Read | A read request (memory or memory-like component). |
6 | LT_Write | A write request (memory or memory-like component) |
7 | LT_Input | An input request. |
8 | LT_Output | An output request. |
9 | LT_Other | Some situation not covered by other log types. |
void Update( TComponent* C, int64 PC, int64 I )
Log an item to the log file. The logger gathers the state from the component and does the log. This is used for CPUs and the PC corresponding to the beginning of the current instruction is passed. I is the instruction about to be executed. This should be called after the instruction is fetched but before it is executed.