MainframeMaster

COBOL Data Logging

Data logging records data processing activities, transactions, errors, and system events for audit trails, debugging, compliance, and operational monitoring. Learn comprehensive logging strategies for reliable data processing.

Transaction Logging

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
WORKING-STORAGE SECTION. 01 TRANSACTION-LOG. 05 LOG-RECORD. 10 LOG-TIMESTAMP PIC 9(14). 10 LOG-TYPE PIC X(20). 10 LOG-DESCRIPTION PIC X(100). 10 USER-ID PIC X(8). 10 TRANSACTION-ID PIC 9(8). 10 RECORD-COUNT PIC 9(6). 10 LOG-STATUS PIC X. 88 LOG-SUCCESS VALUE 'S'. 88 LOG-ERROR VALUE 'E'. PROCEDURE DIVISION. PERFORM LOG-TRANSACTION LOG-TRANSACTION. MOVE FUNCTION CURRENT-DATE TO LOG-TIMESTAMP MOVE 'CUSTOMER_UPDATE' TO LOG-TYPE MOVE 'Customer balance updated successfully' TO LOG-DESCRIPTION MOVE 'USER123' TO USER-ID MOVE 12345678 TO TRANSACTION-ID MOVE 1 TO RECORD-COUNT MOVE 'S' TO LOG-STATUS WRITE TRANSACTION-LOG-RECORD DISPLAY 'Transaction logged: ' LOG-TYPE DISPLAY 'Status: ' LOG-STATUS DISPLAY 'User: ' USER-ID.

Implement comprehensive transaction logging to record all data processing activities. Include timestamps, transaction types, descriptions, user information, and status for complete audit trails.

Error Logging

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
WORKING-STORAGE SECTION. 01 ERROR-LOG. 05 ERROR-RECORD. 10 ERROR-TIMESTAMP PIC 9(14). 10 ERROR-TYPE PIC X(20). 10 ERROR-CODE PIC 9(4). 10 ERROR-MESSAGE PIC X(200). 10 ERROR-SEVERITY PIC X. 88 CRITICAL-ERROR VALUE 'C'. 88 WARNING-ERROR VALUE 'W'. 88 INFO-ERROR VALUE 'I'. 10 PROGRAM-NAME PIC X(30). 10 ERROR-CONTEXT PIC X(100). PROCEDURE DIVISION. PERFORM LOG-ERROR LOG-ERROR. MOVE FUNCTION CURRENT-DATE TO ERROR-TIMESTAMP MOVE 'DATA_VALIDATION' TO ERROR-TYPE MOVE 1001 TO ERROR-CODE MOVE 'Customer ID validation failed - invalid format' TO ERROR-MESSAGE MOVE 'C' TO ERROR-SEVERITY MOVE 'CUSTOMER_UPDATE_PROGRAM' TO PROGRAM-NAME MOVE 'Customer ID: 123456789 (too long)' TO ERROR-CONTEXT WRITE ERROR-LOG-RECORD DISPLAY 'Error logged: ' ERROR-TYPE DISPLAY 'Code: ' ERROR-CODE DISPLAY 'Message: ' ERROR-MESSAGE DISPLAY 'Severity: ' ERROR-SEVERITY.

Implement detailed error logging with error types, codes, messages, severity levels, program names, and context information. Use appropriate severity levels for different error types.

Data Change Logging

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
WORKING-STORAGE SECTION. 01 DATA-CHANGE-LOG. 05 CHANGE-RECORD. 10 CHANGE-TIMESTAMP PIC 9(14). 10 CHANGE-TYPE PIC X(10). 88 INSERT-CHANGE VALUE 'INSERT'. 88 UPDATE-CHANGE VALUE 'UPDATE'. 88 DELETE-CHANGE VALUE 'DELETE'. 10 TABLE-NAME PIC X(20). 10 RECORD-KEY PIC X(20). 10 OLD-VALUES PIC X(500). 10 NEW-VALUES PIC X(500). 10 CHANGE-USER PIC X(8). PROCEDURE DIVISION. PERFORM LOG-DATA-CHANGE LOG-DATA-CHANGE. MOVE FUNCTION CURRENT-DATE TO CHANGE-TIMESTAMP MOVE 'UPDATE' TO CHANGE-TYPE MOVE 'CUSTOMER_MASTER' TO TABLE-NAME MOVE 'CUST123456' TO RECORD-KEY MOVE 'BALANCE:1500.50,STATUS:A' TO OLD-VALUES MOVE 'BALANCE:2000.75,STATUS:A' TO NEW-VALUES MOVE 'USER456' TO CHANGE-USER WRITE DATA-CHANGE-LOG-RECORD DISPLAY 'Data change logged: ' CHANGE-TYPE DISPLAY 'Table: ' TABLE-NAME DISPLAY 'Key: ' RECORD-KEY DISPLAY 'User: ' CHANGE-USER.

Log all data changes including inserts, updates, and deletes. Record old and new values, table names, record keys, and user information for complete change audit trails.

Performance Logging

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
WORKING-STORAGE SECTION. 01 PERFORMANCE-LOG. 05 PERF-RECORD. 10 PERF-TIMESTAMP PIC 9(14). 10 PROGRAM-NAME PIC X(30). 10 OPERATION-TYPE PIC X(20). 10 START-TIME PIC 9(6). 10 END-TIME PIC 9(6). 10 ELAPSED-TIME PIC 9(6). 10 RECORDS-PROCESSED PIC 9(8). 10 MEMORY-USED PIC 9(8). 10 CPU-TIME PIC 9(6). PROCEDURE DIVISION. PERFORM LOG-PERFORMANCE LOG-PERFORMANCE. MOVE FUNCTION CURRENT-DATE TO PERF-TIMESTAMP MOVE 'CUSTOMER_ETL_PROGRAM' TO PROGRAM-NAME MOVE 'BATCH_PROCESSING' TO OPERATION-TYPE MOVE 143000 TO START-TIME MOVE 143045 TO END-TIME COMPUTE ELAPSED-TIME = END-TIME - START-TIME MOVE 10000 TO RECORDS-PROCESSED MOVE 2048000 TO MEMORY-USED MOVE 45 TO CPU-TIME WRITE PERFORMANCE-LOG-RECORD DISPLAY 'Performance logged: ' PROGRAM-NAME DISPLAY 'Elapsed time: ' ELAPSED-TIME ' seconds' DISPLAY 'Records processed: ' RECORDS-PROCESSED DISPLAY 'Memory used: ' MEMORY-USED ' bytes'.

Log performance metrics including execution times, record counts, memory usage, and CPU time. Monitor performance trends and identify bottlenecks for optimization.

Security Event Logging

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
WORKING-STORAGE SECTION. 01 SECURITY-LOG. 05 SECURITY-RECORD. 10 SEC-TIMESTAMP PIC 9(14). 10 SEC-EVENT-TYPE PIC X(20). 10 SEC-USER-ID PIC X(8). 10 SEC-IP-ADDRESS PIC X(15). 10 SEC-ACTION PIC X(30). 10 SEC-RESULT PIC X(10). 88 SEC-SUCCESS VALUE 'SUCCESS'. 88 SEC-FAILURE VALUE 'FAILURE'. 10 SEC-DETAILS PIC X(200). PROCEDURE DIVISION. PERFORM LOG-SECURITY-EVENT LOG-SECURITY-EVENT. MOVE FUNCTION CURRENT-DATE TO SEC-TIMESTAMP MOVE 'USER_LOGIN' TO SEC-EVENT-TYPE MOVE 'USER789' TO SEC-USER-ID MOVE '192.168.1.100' TO SEC-IP-ADDRESS MOVE 'LOGIN_ATTEMPT' TO SEC-ACTION MOVE 'SUCCESS' TO SEC-RESULT MOVE 'User successfully logged in to customer system' TO SEC-DETAILS WRITE SECURITY-LOG-RECORD DISPLAY 'Security event logged: ' SEC-EVENT-TYPE DISPLAY 'User: ' SEC-USER-ID DISPLAY 'Result: ' SEC-RESULT DISPLAY 'Details: ' SEC-DETAILS.

Log security events including login attempts, access violations, permission changes, and suspicious activities. Record user IDs, IP addresses, actions, and results for security monitoring.

Structured Logging Format

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
WORKING-STORAGE SECTION. 01 STRUCTURED-LOG. 05 LOG-ENTRY. 10 LOG-TIMESTAMP PIC 9(14). 10 LOG-LEVEL PIC X(5). 88 DEBUG-LEVEL VALUE 'DEBUG'. 88 INFO-LEVEL VALUE 'INFO'. 88 WARN-LEVEL VALUE 'WARN'. 88 ERROR-LEVEL VALUE 'ERROR'. 10 LOG-CATEGORY PIC X(20). 10 LOG-MESSAGE PIC X(200). 10 LOG-FIELDS PIC X(500). PROCEDURE DIVISION. PERFORM STRUCTURED-LOGGING STRUCTURED-LOGGING. MOVE FUNCTION CURRENT-DATE TO LOG-TIMESTAMP MOVE 'INFO' TO LOG-LEVEL MOVE 'DATA_PROCESSING' TO LOG-CATEGORY MOVE 'Customer data processing completed successfully' TO LOG-MESSAGE MOVE 'CUSTOMER_ID:123456,RECORDS:1000,STATUS:SUCCESS' TO LOG-FIELDS WRITE STRUCTURED-LOG-RECORD DISPLAY 'Structured log entry:' DISPLAY 'Level: ' LOG-LEVEL DISPLAY 'Category: ' LOG-CATEGORY DISPLAY 'Message: ' LOG-MESSAGE DISPLAY 'Fields: ' LOG-FIELDS.

Use structured logging formats with consistent fields, log levels, categories, and structured data. This enables better log analysis, searching, and automated processing.

Log Rotation and Management

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
WORKING-STORAGE SECTION. 01 LOG-MANAGEMENT. 05 LOG-FILE-INFO. 10 CURRENT-LOG-FILE PIC X(50). 10 LOG-FILE-SIZE PIC 9(8). 10 MAX-LOG-SIZE PIC 9(8) VALUE 10000000. 10 LOG-RETENTION-DAYS PIC 9(3) VALUE 90. 10 LOG-ARCHIVE-PATH PIC X(100). PROCEDURE DIVISION. PERFORM MANAGE-LOG-FILES MANAGE-LOG-FILES. MOVE 'CUSTOMER_LOG_20231225.DAT' TO CURRENT-LOG-FILE MOVE 5000000 TO LOG-FILE-SIZE MOVE '/ARCHIVE/LOGS/' TO LOG-ARCHIVE-PATH *> Check if log file needs rotation IF LOG-FILE-SIZE > MAX-LOG-SIZE PERFORM ROTATE-LOG-FILE END-IF *> Check for old log files to archive PERFORM ARCHIVE-OLD-LOGS DISPLAY 'Log management completed' DISPLAY 'Current log file: ' CURRENT-LOG-FILE DISPLAY 'Log file size: ' LOG-FILE-SIZE ' bytes'.

Implement log rotation and management to handle large log files efficiently. Archive old logs, manage disk space, and maintain appropriate retention periods for compliance.

Centralized Logging

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
WORKING-STORAGE SECTION. 01 CENTRALIZED-LOGGING. 05 CENTRAL-LOG-RECORD. 10 LOG-SOURCE PIC X(30). 10 LOG-TIMESTAMP PIC 9(14). 10 LOG-LEVEL PIC X(5). 10 LOG-MESSAGE PIC X(300). 10 LOG-METADATA PIC X(200). PROCEDURE DIVISION. PERFORM SEND-TO-CENTRAL-LOG SEND-TO-CENTRAL-LOG. MOVE 'CUSTOMER_SYSTEM' TO LOG-SOURCE MOVE FUNCTION CURRENT-DATE TO LOG-TIMESTAMP MOVE 'INFO' TO LOG-LEVEL MOVE 'Customer data processing batch completed' TO LOG-MESSAGE MOVE 'BATCH_ID:12345,RECORDS:5000,STATUS:SUCCESS' TO LOG-METADATA *> Send to centralized logging system CALL 'CENTRAL-LOGGER' USING CENTRAL-LOG-RECORD DISPLAY 'Log sent to central system: ' LOG-SOURCE DISPLAY 'Message: ' LOG-MESSAGE DISPLAY 'Metadata: ' LOG-METADATA.

Implement centralized logging to collect logs from multiple systems and programs. Use standardized formats and centralized log management systems for comprehensive monitoring.

Log Analysis and Monitoring

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
WORKING-STORAGE SECTION. 01 LOG-ANALYSIS. 05 ANALYSIS-RECORD. 10 ANALYSIS-TIMESTAMP PIC 9(14). 10 ANALYSIS-TYPE PIC X(20). 10 ERROR-COUNT PIC 9(6). 10 WARNING-COUNT PIC 9(6). 10 SUCCESS-COUNT PIC 9(6). 10 ANALYSIS-SUMMARY PIC X(200). PROCEDURE DIVISION. PERFORM ANALYZE-LOGS ANALYZE-LOGS. MOVE FUNCTION CURRENT-DATE TO ANALYSIS-TIMESTAMP MOVE 'DAILY_LOG_ANALYSIS' TO ANALYSIS-TYPE MOVE 0 TO ERROR-COUNT MOVE 0 TO WARNING-COUNT MOVE 0 TO SUCCESS-COUNT *> Analyze log entries OPEN INPUT LOG-FILE PERFORM UNTIL EOF READ LOG-FILE AT END SET EOF TO TRUE NOT AT END EVALUATE LOG-LEVEL WHEN 'ERROR' ADD 1 TO ERROR-COUNT WHEN 'WARN' ADD 1 TO WARNING-COUNT WHEN 'INFO' ADD 1 TO SUCCESS-COUNT END-EVALUATE END-READ END-PERFORM CLOSE LOG-FILE *> Generate analysis summary STRING 'Daily analysis: ' SUCCESS-COUNT ' success, ' WARNING-COUNT ' warnings, ' ERROR-COUNT ' errors' INTO ANALYSIS-SUMMARY END-STRING DISPLAY 'Log analysis completed:' DISPLAY 'Errors: ' ERROR-COUNT DISPLAY 'Warnings: ' WARNING-COUNT DISPLAY 'Success: ' SUCCESS-COUNT DISPLAY 'Summary: ' ANALYSIS-SUMMARY.

Implement log analysis and monitoring to identify patterns, trends, and issues. Generate summaries, alerts, and reports based on log analysis for operational insights.