Processing logs line by line
The state machine tracks the state of: Input/Output blocks, SQL BusComp, Browser Script, Process Properties - each log block is closed correctly, even if the next line breaks the context.
SIEBEL CRM · ORACLE · LOG INTELLIGENCE
The Python parser parses Siebel logs, terminal output line by line, and turns it into annotated MDX: badges, workflow step diagrams, collapsible SQL blocks, and warnings - right in your Starlight documentation.
invoke method: UpsertOrderTECH STACK
WHAT PARSER DO
The state machine tracks the state of: Input/Output blocks, SQL BusComp, Browser Script, Process Properties - each log block is closed correctly, even if the next line breaks the context.
Each Instantiating step definition turns into a graph node, and each StpExec Cond turns into a passed/not passed arrow. The output is a finished d2 sketch with dead branches ⛔.
ObjMgrLog Error/Warning with an ignore list by code (SBL-EXL-00145, etc.) are grouped into color bars: caution for warning, danger for error.
Views, Applets, BusComps, Business Services, Manifests, Workflow Steps — are considered a Counter and are collapsed into details tables on each page.
Parsing in chunks - new .mdx file part, but splitting never happens inside an open block (Input/Output, SQL, Browser Script).
charset_normalizer → chardet → utf-8 fallback. Siebel logs in cp1251 are as readable as utf-8.
Built with targeted AI prompting for rapid prototyping and clean code, avoiding runtime overhead or API token burn. 😎
ARCHITECTURE AND DEPLOYMENT
From raw application server logs to a fast static site on edge servers.
Siebel Application Server Raw Log.
The script converts Siebel raw logs into MDX files with components.
Version control and storage of generated MDX.
Astro leverages Sätteri's native Rust processing to render MDX on edge servers for maximum speed.
KITCHEN SINK
These are actual Starlight components (Badge, Aside, CopyId),
not a mockup—that’s how the parser formats each log line.
📊 Log Metadata
| Property | Value |
|---|---|
| 📄 File Name | FINSObjMgr_enu_0101_987.log |
| 📅 Date Start | 2026-08-20 09:43:27 |
| 📅 Date End | 2026-08-20 10:30:58 |
| ⏱️ Duration | 0h 47m 31s |
| 💾 File Size | 195.53 MB |
| 🔢 Lines in Raw Log File | 1,534,900 |
| 👤 User | SADMIN |
🧩 File Parts Details
| Part | Lines |
|---|---|
| part_1 | Lines: 1 - 27,899 |
| part_2 | Lines: 27,900 - 89,397 |
| part_3 | Lines: 89,398 - 112,059 |
| … | … |
| part_14 | Lines: 1,315,025 - 1,325,680 |
| part_15 | Lines: 1,325,681 - 1,351,821 |
| part_16 | Lines: 1,351,822 - 1,534,900 |
📦 Log Structure
🗁 List of Views (collapsible block)
| Name | Count | |
|---|---|---|
| FINS Home Page View | 2 | |
| FINS cBanking Homepage View | 2 |
🗁 List of Applets (collapsible block)
| Name | Count | |
|---|---|---|
| Recent Record Account List Applet (PositionOnRow) | 1 | |
| Recent Record Account List Applet (Drilldown) | 1 |
🗁 List of BusComps (collapsible block)
| Name | Count | |
|---|---|---|
| Account | 17 | |
| Contact | 2 |
🗁 List of Manifests (collapsible block)
| Name | Count | |
|---|---|---|
| siebel/navigationpmodel.js | 26 | |
| siebel/jsTreeCtrl.js | 52 |
🗁 List of Workflows (collapsible block)
| Name | Count | |
|---|---|---|
| Workflow Validation Process | 2 | |
| Workflow Change Date Validation | 17 |
🗁 List of BusServices (collapsible block)
| Name | Count | |
|---|---|---|
| Workflow Process Manager | 80 | |
| Workflow Utilities | 265 |
Manifest / Warning / Error
View header
SWE Row Id
Applet Action
Workflow start / end
Workflow steps
Step branch passed / failed
passed.did not pass.Business Service start / end
invoke method: Updateinvoke method: Update Execute Time: 0.027 seconds.invoke method: UpdateExecuting process definition
Input / Output (collapsible block)
| # | Key | Value |
|---|---|---|
| Process Instance Id | 1-2VJ13937 | |
| Object Id | 1-1D1J-6259 | |
| Triggering Event | 1-4JK4MAD | |
| Siebel Operation Object Id | 9 | |
| Sub Event | 7 | |
| FILEId | 1-2VJ1391V25 | |
| RTESupressInactiveWFerror | Y10 | |
| Event Name | WriteRecordNew | |
| Error Code | 13 | |
| Error Message |
Output: @0*0*10*0*0*0*19*Process Instance Id10*1-2VJ139369*Object Id11*1-1D1J-625816*Triggering Event9*1-4JK4MOD26*Siebel Operation Object Id0*9*Sub Event0*7*FILEId10*1-2VJ1391V25*RTESupressInactiveWFerror1*Y10*Event Name14*WriteRecordNew10*Error Code0*13*Error Message0*Browser Script (collapsible block)
function FINS_cBanking_Request_Header_Form_Applet__Header_Applet_PreInvokeMethod (name, inputPropSet) { if(name == 'ClientCancel') { if(confirm("cansel processing?")) return ("ContinueOperation"); else return ("CancelOperation"); return ("ContinueOperation"); } if(name == 'ClientClose') { if(confirm("file is approved without processing?")) return ("ContinueOperation"); else return ("CancelOperation"); return ("ContinueOperation"); }}Business Component SQL (collapsible block)
SELECT /*+ ALL_ROWS */ T5.ROW_ID, T2.EMP_STAT_CD, T1.FST_NAME, T1.LAST_NAME, T6.LOGIN, T5.NAME, T4.OWN_INST_ID, T3.ALLOW_UPD_FLGFROM SIEBEL.S_CONTACT T1, SIEBEL.S_EMP_PER T2, SIEBEL.S_EMP_APPT T3, SIEBEL.S_CONTACT_SS T4, SIEBEL.S_PARTY T5, SIEBEL.S_USER T6WHERE T5.ROW_ID = T3.EMP_ID AND T5.ROW_ID = T6.PAR_ROW_ID AND T5.ROW_ID = T1.PAR_ROW_ID AND T5.ROW_ID = T2.PAR_ROW_ID AND T5.ROW_ID = T4.PAR_ROW_ID (+) AND (T3.SHARED_EMP_ID = '1-3KURRQI')Process Properties
| # | Process Prop Name | Datatype | Process Prop Value |
|---|---|---|---|
| 1315760 | Siebel Operation Object Id | String | 1-2VJ1394S |
| 1315762 | Entity Change Date | Datetime | 20/08/2026 00:00:00 |
| 1315764 | NumOfRows | Number | 1 |
| 1315766 | Valid Period | Number | 5 |
Total Time For Process
| # | Process Name | Num Processed | Total Time For Process |
|---|---|---|---|
| 1353247 | Validation Process | 1 | 2765 |
Process Flow Diagram
Process Flow Diagram : 📕 Query Data Workflow
| Name | Count | |
|---|---|---|
| Start | 1 | |
| Query Data | 1 | |
| Date Calculate | 1 | |
| Check Change Date | 1 | |
| Change Default Result to Y | 1 | |
| End | 1 |
git push --force-with-leasefrom 🇺🇦