java-stack-parser
v1.0.0
Published
Parse Java stack traces and transform them into comprehensive JS objects
Downloads
21
Maintainers
Readme
java-stack-parser
Parse Java stack traces and transform them into comprehensive JS objects
Install
You can install this package either with npm
, yarn
or bower
.
npm / yarn
For npm:
~$ npm install java-stack-parser
For yarn:
~$ yarn add java-stack-parser
Then, you can require('java-stack-parser')
or include the library in your web page directly via a <script>
tag
<script src="/node_modules/java-stack-parser/lib/java-stack-parser.min.js"></script>
bower
~$ bower install java-stack-parser
Then, you can include the library in your web page directly via a <script>
tag
<script src="/bower_components/java-stack-parser/lib/java-stack-parser.min.js"></script>
Documentation
The library defines 3 objects:
Stack
: represents the full stacktrace. It is compose of a list ofStackGroup
s.StackGroup
represents a group of consecutiveStackLine
s with the sameStackPackage
.StackLine
represents a line of the full stacktrace, e.g.at java.net.SocketInputStream.read(SocketInputStream.java:185)
.StackPackage
represents the package of the currentStackLine
. Taking theStackLine
above, the resultingStackPackage
will bejava.net
.
Stack
Object
This object is used to parse and transform a string representing a Java stack trace. Here is an example of how to use it. Alternatively, you can check out the working demo
let stacktrace = '...';
let stack = new Stack();
stack.parse(stacktrace);
// Display stack trace information into the console
stack.groups.forEach((group)=> {
console.log('Package: ' + group.stackPackage.name + ' contains ' + group.lines.length + ' lines');
group.lines.forEach((line)=> {
console.log(line.javaClass + '.' java.method + ' (Source: ' + line.source + ' at line: ' line.line + ')');
});
});
The Stack
object gives you the ability of defining your own "vendor" packages, resulting of a better grouping. For example, if your application uses 2 libraries with a groupId of com.acme
and my.library
, you can pass this as an optional parameter to the constructor:
let stacktrace = '...';
let stack = new Stack({
'My libraries': ['com.acme', 'my.library'],
"Java/Sun/Oracle": ["java", "javax", "sun", "sunw", "com.sun", "com.oracle"],
"Apache": ["org.apache"],
});
stack.parse(stacktrace);
// Display stack trace information into the console
stack.groups.forEach((group)=> {
console.log('Package: ' + group.stackPackage.name + ' contains ' + group.lines.length + ' lines');
group.lines.forEach((line)=> {
console.log(line.javaClass + '.' java.method + ' (Source: ' + line.source + ' at line: ' line.line + ')');
});
});
Now, if the stack trace contains consecutive lin with the package com.acme
or my.library
, they will be group under the same StackGroup
.
Development
To build the library in development mode (non-uglified, with a watch on the source) simply do:
~$ npm run dev
For the production version:
~$ npm run build
You can run tests and check the coverage with the following 2 commands:
# Run tests
~$ npm test
# Check covergae
~$ npm run coverage
License
This library is released under Apache 2.0 license