Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 40a95c6

Browse files
Merge pull request #174 from allproxy/3-57-10
3 57 10: non-JSON log files
2 parents 9a42882 + eb85e6b commit 40a95c6

17 files changed

+30
-30
lines changed

‎docs/apFileSystem.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"user_agent"
2323
],
2424
"method": "advanced",
25-
"jsonLogScript": "// Function called to extract date, level, app name and message\n//\n// @param preJSONString: string - optional non-JSON string proceeding JSON object\n// @param jsonObject: {} - JSON log data\n// @returns {date: Date, level: string, category: string, appName: string, message: string, rawLine: string, additionalJSON: {} }\n//\n// category is the availability zone\n// appName is the pod name\n//\nconst extractDateLevelCategoryAppNameMessage = function (preJSONString, jsonObject) {\n let level = 'info';\n let date = new Date();\n let category = '';\n let kind = '';\n let message = \"Message field not defined - click '?'\";\n let additionalJSON = {};\n const ignoreFields = [];\n const typeahead = [];\n // Kube object?\n if (jsonObject.kind && jsonObject.metadata) {\n kind = jsonObject.kind;\n message = jsonObject.metadata.name;\n if (jsonObject.metadata.creationTimestamp) {\n date = new Date(jsonObject.metadata.creationTimestamp);\n }\n level = '';\n additionalJSON['level'] = undefined;\n // Errors detected by the parseJson plugin?\n if (jsonObject['errors']) {\n level = 'error';\n additionalJSON['level'] = level;\n }\n }\n else { // Try to dynamically find fields\n let dateSet, levelSet, kindSet, messageSet = false;\n\n const fieldValues = []; // array of {field, value} pairs \n\n // Recursively traverse JSON and build fieldValues array\n function traverseJson(obj) {\n for (let field in obj) {\n const value = obj[field];\n if (typeof field === 'string' && (typeof value === 'string' || typeof value === 'number')) {\n field = field.toLowerCase();\n fieldValues.push({ field, value });\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n traverseJson(value);\n }\n }\n }\n traverseJson(jsonObject);\n\n // Check each JSON field,value pair looking for date, info, kind and message\n for (const fieldValue of fieldValues) {\n const field = fieldValue.field;\n const value = fieldValue.value;\n\n checkForDateLevelKindMessage(field, value);\n\n if (dateSet && levelSet && kindSet && messageSet) break;\n }\n\n // Check for data, level, kind and message fields\n function checkForDateLevelKindMessage(field, value) {\n if (!dateSet) {\n if ((field.includes('ts') || field.includes('time') || field.includes('date')) && isValidDate(value)) {\n dateSet = true;\n date = new Date(value);\n return;\n }\n }\n\n if (typeof value !== 'string') return;\n\n if (!levelSet) {\n if (field === 'level') {\n levelSet = true;\n level = value;\n if (value.startsWith('err')) typeahead.push(field + ':' + value);\n return;\n } else if (field === 'severity') {\n level = value;\n return;\n } else if (field === 'error') {\n level = 'error';\n return;\n }\n }\n\n if (field === 'error' && value.length > 0) typeahead.push(field + ':*');\n\n if (!kindSet) {\n if (field === 'kind' || field === 'app' || field === 'appname' || field === 'applicationname' || field === 'actionname') {\n kindSet = true;\n kind = value;\n return;\n } else if (field.length <= 64 && (field.startsWith(\"thread\") ||\n field.startsWith('app') || field.endsWith('app'))) {\n kind = value;\n return;\n }\n }\n\n if (!messageSet) {\n if (field === 'message' || field === 'msg' || field === 'error') {\n messageSet = true;\n message = value;\n return;\n } else if (field.startsWith('message')) {\n message = value;\n return;\n }\n }\n\n }\n\n // Returns true, if this is a valid date\n function isValidDate(value) {\n try {\n let date = new Date(value);\n if (date.toString() === 'Invalid Date' && typeof value === 'string') {\n const tokens = value.split(':', 2);\n if (tokens.length === 2) {\n let d = new Date(tokens[0]);\n date = new Date(d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ':' + tokens[1]);\n }\n }\n if (date.toString() === 'Invalid Date') return false;\n } catch (e) {\n return false;\n }\n return true;\n }\n }\n\n return { date, level, category, kind, message, rawLine: undefined, additionalJSON, ignoreFields, typeahead };\n};",
25+
"jsonLogScript": "// Function called to extract date, level, app name and message\n//\n// @param preJSONString: string - optional non-JSON string proceeding JSON object\n// @param jsonObject: {} - JSON log data\n// @returns {date: Date, level: string, category: string, appName: string, message: string, rawLine: string, additionalJSON: {} }\n//\n// category is the availability zone\n// appName is the pod name\n//\nconst extractDateLevelCategoryAppNameMessage = function (preJSONString, jsonObject) {\n let level = 'info';\n let date = new Date(0);\n let category = '';\n let kind = '';\n let message = \"Message field not defined - click '?'\";\n let additionalJSON = {};\n const ignoreFields = [];\n const typeahead = [];\n // Kube object?\n if (jsonObject.kind && jsonObject.metadata) {\n kind = jsonObject.kind;\n message = jsonObject.metadata.name;\n if (jsonObject.metadata.creationTimestamp) {\n date = new Date(jsonObject.metadata.creationTimestamp);\n }\n level = '';\n additionalJSON['level'] = undefined;\n // Errors detected by the parseJson plugin?\n if (jsonObject['errors']) {\n level = 'error';\n additionalJSON['level'] = level;\n }\n }\n else { // Try to dynamically find fields\n let dateSet, levelSet, kindSet, messageSet = false;\n\n const fieldValues = []; // array of {field, value} pairs \n\n // Recursively traverse JSON and build fieldValues array\n function traverseJson(obj) {\n for (let field in obj) {\n const value = obj[field];\n if (typeof field === 'string' && (typeof value === 'string' || typeof value === 'number')) {\n field = field.toLowerCase();\n fieldValues.push({ field, value });\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n traverseJson(value);\n }\n }\n }\n traverseJson(jsonObject);\n\n // Check each JSON field,value pair looking for date, info, kind and message\n for (const fieldValue of fieldValues) {\n const field = fieldValue.field;\n const value = fieldValue.value;\n\n checkForDateLevelKindMessage(field, value);\n\n if (dateSet && levelSet && kindSet && messageSet) break;\n }\n\n // Check for data, level, kind and message fields\n function checkForDateLevelKindMessage(field, value) {\n if (!dateSet) {\n if ((field.includes('ts') || field.includes('time') || field.includes('date')) && isValidDate(value)) {\n dateSet = true;\n date = new Date(value);\n return;\n }\n }\n\n if (typeof value !== 'string') return;\n\n if (!levelSet) {\n if (field === 'level') {\n levelSet = true;\n level = value;\n if (value.startsWith('err')) typeahead.push(field + ':' + value);\n return;\n } else if (field === 'severity') {\n level = value;\n return;\n } else if (field === 'error') {\n level = 'error';\n return;\n }\n }\n\n if (field === 'error' && value.length > 0) typeahead.push(field + ':*');\n\n if (!kindSet) {\n if (field === 'kind' || field === 'app' || field === 'appname' || field === 'applicationname' || field === 'actionname') {\n kindSet = true;\n kind = value;\n return;\n } else if (field.length <= 64 && (field.startsWith(\"thread\") ||\n field.startsWith('app') || field.endsWith('app'))) {\n kind = value;\n return;\n }\n }\n\n if (!messageSet) {\n if (field === 'message' || field === 'msg' || field === 'error') {\n messageSet = true;\n message = value;\n return;\n } else if (field.startsWith('message')) {\n message = value;\n return;\n }\n }\n\n }\n\n // Returns true, if this is a valid date\n function isValidDate(value) {\n try {\n let date = new Date(value);\n if (date.toString() === 'Invalid Date' && typeof value === 'string') {\n const tokens = value.split(':', 2);\n if (tokens.length === 2) {\n let d = new Date(tokens[0]);\n date = new Date(d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ':' + tokens[1]);\n }\n }\n if (date.toString() === 'Invalid Date') return false;\n } catch (e) {\n return false;\n }\n return true;\n }\n }\n\n return { date, level, category, kind, message, rawLine: undefined, additionalJSON, ignoreFields, typeahead };\n};",
2626
"queries": {},
2727
"briefJsonFields": "{\n \"action\": true,\n \"status_code\": true,\n \"StatusCode\": true,\n \"error\": true,\n \"errors\": true,\n \"Method\": true,\n \"url\": true,\n \"uri\": true,\n \"path\": true,\n \"metadata.deletionTimestamp\": true\n}",
2828
"jsonSubQueries": "[]",

‎docs/asset-manifest.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"files": {
3-
"main.css": "/static/css/main.21ff08ed.css",
4-
"main.js": "/static/js/main.0aa9c4d0.js",
3+
"main.css": "/static/css/main.8e2d2fe7.css",
4+
"main.js": "/static/js/main.32e1dfb0.js",
55
"static/js/453.f9af8ee5.chunk.js": "/static/js/453.f9af8ee5.chunk.js",
66
"static/media/fa-solid-900.svg": "/static/media/fa-solid-900.7a8b4f130182d19a2d7c.svg",
77
"static/media/fa-brands-400.svg": "/static/media/fa-brands-400.2f517e09eb2ca6650ff5.svg",
@@ -19,12 +19,12 @@
1919
"static/media/fa-regular-400.woff": "/static/media/fa-regular-400.bb58e57c48a3e911f15f.woff",
2020
"static/media/fa-regular-400.woff2": "/static/media/fa-regular-400.7a3337626410ca2f4071.woff2",
2121
"index.html": "/index.html",
22-
"main.21ff08ed.css.map": "/static/css/main.21ff08ed.css.map",
23-
"main.0aa9c4d0.js.map": "/static/js/main.0aa9c4d0.js.map",
22+
"main.8e2d2fe7.css.map": "/static/css/main.8e2d2fe7.css.map",
23+
"main.32e1dfb0.js.map": "/static/js/main.32e1dfb0.js.map",
2424
"453.f9af8ee5.chunk.js.map": "/static/js/453.f9af8ee5.chunk.js.map"
2525
},
2626
"entrypoints": [
27-
"static/css/main.21ff08ed.css",
28-
"static/js/main.0aa9c4d0.js"
27+
"static/css/main.8e2d2fe7.css",
28+
"static/js/main.32e1dfb0.js"
2929
]
3030
}

‎docs/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
<link rel="manifest" href="manifest.json" />
1212
<title>AllProxy</title>
1313
<script>var exports = { __esModule: !0 }</script>
14-
<script defer="defer" src="static/js/main.0aa9c4d0.js"></script>
15-
<link href="static/css/main.21ff08ed.css" rel="stylesheet">
14+
<script defer="defer" src="static/js/main.32e1dfb0.js"></script>
15+
<link href="static/css/main.8e2d2fe7.css" rel="stylesheet">
1616
</head>
1717

1818
<body><noscript>You need to enable JavaScript to run this app.</noscript>

‎docs/plugins/parsejson/plugin.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
// appName is the pod name
99
//
1010
function parseJSON(preJSONString, jsonObject) {
11-
let level = 'info';
12-
let date = new Date();
11+
let level = '';
12+
let date = new Date(0);
1313
let category = '';
14-
let kind = 'Kind_is_not_defined';
15-
let message = "Message field not defined - click '?'";
14+
let kind = '';
15+
let message = "";
1616
let additionalJSON = {};
1717
const ignoreFields = [];
1818
const typeahead = [];

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /